Skip to content

Commit 6346290

Browse files
committed
bug fixed + rename
1 parent 1f948c5 commit 6346290

File tree

14 files changed

+107
-102
lines changed

14 files changed

+107
-102
lines changed

config/config_default.ini

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -94,36 +94,36 @@ PROFILING = 0
9494
; maximum number of iterations that is allowed to generate random-walk. If spin can not move yet (e.g. because of restricted boundries), it is considered lost and magnetization is set to zero
9595
MAX_ITERATIONS = 1e4
9696
; scale PHANTOM length to simulate different sample sizes
97-
SAMPLE_LENGTH_SCALES[0] = 0.0093691
98-
SAMPLE_LENGTH_SCALES[1] = 0.012177
99-
SAMPLE_LENGTH_SCALES[2] = 0.015825
100-
SAMPLE_LENGTH_SCALES[3] = 0.020568
101-
SAMPLE_LENGTH_SCALES[4] = 0.026731
102-
SAMPLE_LENGTH_SCALES[5] = 0.034741
103-
SAMPLE_LENGTH_SCALES[6] = 0.045151
104-
SAMPLE_LENGTH_SCALES[7] = 0.058681
105-
SAMPLE_LENGTH_SCALES[8] = 0.076265
106-
SAMPLE_LENGTH_SCALES[9] = 0.099119
107-
SAMPLE_LENGTH_SCALES[10] = 0.12882
108-
SAMPLE_LENGTH_SCALES[11] = 0.16742
109-
SAMPLE_LENGTH_SCALES[12] = 0.21759
110-
SAMPLE_LENGTH_SCALES[13] = 0.28279
111-
SAMPLE_LENGTH_SCALES[14] = 0.36753
112-
SAMPLE_LENGTH_SCALES[15] = 0.47767
113-
SAMPLE_LENGTH_SCALES[16] = 0.6208
114-
SAMPLE_LENGTH_SCALES[17] = 0.80683
115-
SAMPLE_LENGTH_SCALES[18] = 1.0486
116-
SAMPLE_LENGTH_SCALES[19] = 1.3628
117-
SAMPLE_LENGTH_SCALES[20] = 1.7712
118-
SAMPLE_LENGTH_SCALES[21] = 2.302
119-
SAMPLE_LENGTH_SCALES[22] = 2.9918
120-
SAMPLE_LENGTH_SCALES[23] = 3.8883
121-
SAMPLE_LENGTH_SCALES[24] = 5.0534
122-
SAMPLE_LENGTH_SCALES[25] = 6.5677
123-
SAMPLE_LENGTH_SCALES[26] = 8.5357
124-
SAMPLE_LENGTH_SCALES[27] = 11.0935
125-
SAMPLE_LENGTH_SCALES[28] = 14.4178
126-
SAMPLE_LENGTH_SCALES[29] = 18.7382
97+
FOV_SCALE[0] = 0.0093691
98+
FOV_SCALE[1] = 0.012177
99+
FOV_SCALE[2] = 0.015825
100+
FOV_SCALE[3] = 0.020568
101+
FOV_SCALE[4] = 0.026731
102+
FOV_SCALE[5] = 0.034741
103+
FOV_SCALE[6] = 0.045151
104+
FOV_SCALE[7] = 0.058681
105+
FOV_SCALE[8] = 0.076265
106+
FOV_SCALE[9] = 0.099119
107+
FOV_SCALE[10] = 0.12882
108+
FOV_SCALE[11] = 0.16742
109+
FOV_SCALE[12] = 0.21759
110+
FOV_SCALE[13] = 0.28279
111+
FOV_SCALE[14] = 0.36753
112+
FOV_SCALE[15] = 0.47767
113+
FOV_SCALE[16] = 0.6208
114+
FOV_SCALE[17] = 0.80683
115+
FOV_SCALE[18] = 1.0486
116+
FOV_SCALE[19] = 1.3628
117+
FOV_SCALE[20] = 1.7712
118+
FOV_SCALE[21] = 2.302
119+
FOV_SCALE[22] = 2.9918
120+
FOV_SCALE[23] = 3.8883
121+
FOV_SCALE[24] = 5.0534
122+
FOV_SCALE[25] = 6.5677
123+
FOV_SCALE[26] = 8.5357
124+
FOV_SCALE[27] = 11.0935
125+
FOV_SCALE[28] = 14.4178
126+
FOV_SCALE[29] = 18.7382
127127

128128

129129

config/dwi/dwi_baseline.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ TIME_STEP = 50
4848
; use 0 for random seed generation, otherwise use a positive integer to make a reproducible simulation
4949
SEED = 25
5050
NUMBER_OF_SPINS = 1e6
51-
SAMPLE_LENGTH_SCALES[0] = 1.0
51+
FOV_SCALE[0] = 1.0
5252
MAX_ITERATIONS = 1e6
5353
RECORD_TRAJECTORY = 0
5454

config/gradient.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,4 @@ TIME_STEP = 50
4545
[SIMULATION_PARAMETERS]
4646
; use 0 for random seed generation, otherwise use a positive integer to make a reproducible simulation
4747
NUMBER_OF_SPINS = 1030301
48-
SAMPLE_LENGTH_SCALES[0] = 1.0
48+
FOV_SCALE[0] = 1.0

src/file_utils.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ uint8_t find_max(const std::vector<uint8_t> &data);
2626
//---------------------------------------------------------------------------------------------
2727
std::filesystem::path output_dir("./output");
2828

29-
bool file_utils::read_config(std::string config_filename, simulation_parameters *param, std::vector<double>& sample_length_scales, std::map<std::string, std::vector<std::string> >& filenames, bool isParentConfig)
29+
bool file_utils::read_config(std::string config_filename, simulation_parameters *param, std::vector<double>& fov_scale, std::map<std::string, std::vector<std::string> >& filenames, bool isParentConfig)
3030
{
3131
std::stringstream ss;
3232
if (std::filesystem::exists(config_filename) == false)
@@ -50,7 +50,7 @@ bool file_utils::read_config(std::string config_filename, simulation_parameters
5050
std::filesystem::path parent_path = std::filesystem::absolute(config_filename).parent_path();
5151
parent_config = parent_path / parent_config;
5252
}
53-
if (read_config(parent_config.string(), param, sample_length_scales, filenames, true) == false)
53+
if (read_config(parent_config.string(), param, fov_scale, filenames, true) == false)
5454
return false;
5555

5656
BOOST_LOG_TRIVIAL(info) << "Back to reading config: " << config_filename;
@@ -103,10 +103,10 @@ bool file_utils::read_config(std::string config_filename, simulation_parameters
103103
BOOST_LOG_TRIVIAL(error) << cf_name << ") " << "mask must be 3D but is " << dims.size() << "D filename:"<< filenames.at("phantom")[0] << ". Aborting...!";
104104
return false;
105105
}
106-
std::vector<float> sample_length(3, 0);
107-
file_utils::read_h5(filenames.at("phantom")[0], sample_length.data(), "fov", "float");
106+
std::vector<float> fov(3, 0);
107+
file_utils::read_h5(filenames.at("phantom")[0], fov.data(), "fov", "float");
108108
std::copy(dims.begin(), dims.end(), param->fieldmap_size);
109-
std::copy(sample_length.begin(), sample_length.end(), param->sample_length);
109+
std::copy(fov.begin(), fov.end(), param->fov);
110110

111111
param->fieldmap_exist = file_utils::get_size_h5(filenames.at("phantom")[0], "fieldmap").size() == 3;
112112
param->mask_exist = file_utils::get_size_h5(filenames.at("phantom")[0], "mask").size() == 3;
@@ -224,12 +224,12 @@ bool file_utils::read_config(std::string config_filename, simulation_parameters
224224
param->max_iterations = pt.get<float>("SIMULATION_PARAMETERS.MAX_ITERATIONS", param->max_iterations);
225225

226226
std::vector<double> sls;
227-
for(i=0; i<MAX_RF && pt.get_child_optional("SIMULATION_PARAMETERS.SAMPLE_LENGTH_SCALES[" + std::to_string(i) + "]"); i++)
228-
sls.push_back(pt.get("SIMULATION_PARAMETERS.SAMPLE_LENGTH_SCALES[" + std::to_string(i) + "]", 0.));
227+
for(i=0; i<MAX_RF && pt.get_child_optional("SIMULATION_PARAMETERS.FOV_SCALE[" + std::to_string(i) + "]"); i++)
228+
sls.push_back(pt.get("SIMULATION_PARAMETERS.FOV_SCALE[" + std::to_string(i) + "]", 0.));
229229

230230
if(sls.size() > 0)
231-
sample_length_scales = sls;
232-
param->n_sample_length_scales = sample_length_scales.size();
231+
fov_scale = sls;
232+
param->n_fov_scale = fov_scale.size();
233233

234234
// ============== reading section TISSUE_PARAMETERS ==============
235235
// Diffusivity
@@ -310,10 +310,10 @@ bool file_utils::read_fieldmap(std::string fieldmap_filename, std::vector<float>
310310
read_h5(fieldmap_filename, mask.data(), "mask", "uint8_t");
311311
}
312312

313-
std::vector<float> sample_length(3, 0);
314-
file_utils::read_h5(fieldmap_filename, sample_length.data(), "fov", "float");
313+
std::vector<float> fov(3, 0);
314+
file_utils::read_h5(fieldmap_filename, fov.data(), "fov", "float");
315315
BOOST_LOG_TRIVIAL(info) << "Size = " << dims[0] << " x " << dims[1] << " x " << dims[2] << std::endl;
316-
BOOST_LOG_TRIVIAL(info) << "FoV = " << sample_length[0]*1e6 << " x " << sample_length[1]*1e6 << " x " << sample_length[2]*1e6 << " um^3" << std::endl;
316+
BOOST_LOG_TRIVIAL(info) << "FoV = " << fov[0]*1e6 << " x " << fov[1]*1e6 << " x " << fov[2]*1e6 << " um^3" << std::endl;
317317

318318
int n_tissue = find_max(mask) + 1;
319319
if (n_tissue > param->n_tissue_type)

src/helper.cuh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,13 @@ bool check_memory_size(size_t required_size_MB)
4949
bool memory_ok = true;
5050
int32_t device_count = getDeviceCount();
5151
cudaDeviceProp device_properties;
52-
std::cout << "Device(s) memeory check:" << '\n';
52+
BOOST_LOG_TRIVIAL(info) << "Device(s) memeory check:" << '\n';
5353
for(int i=0; i<device_count; i++)
5454
{
5555
cudaSetDevice(i);
5656
cudaGetDeviceProperties(&device_properties, i);
5757
cudaMemGetInfo(&free, &total);
58-
std::cout << " Device " << i+1 << ", " << device_properties.name << ": " << (free>required_size_MB ? "OK" : "Not enough") << '\n';
58+
BOOST_LOG_TRIVIAL(info) << " Device " << i+1 << ", " << device_properties.name << ": " << (free>required_size_MB ? "OK" : "Not enough") << '\n';
5959
if(free<required_size_MB)
6060
BOOST_LOG_TRIVIAL(fatal) << "Not enough GPU memory for the simulation in device "<< i <<"! Required=" << required_size_MB <<" MB, Available=" << free << " MB";
6161
memory_ok = free<required_size_MB ? false:memory_ok;

src/kernels.cu

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -127,16 +127,16 @@ void sim(const simulation_parameters *param, const float *pFieldMap, const uint8
127127
rnd_wlk = dist_random_walk_xyz(gen_r) * diffusivity_scale;
128128
xyz_new[i] = xyz_old[i] + rnd_wlk; // new spin position after random-walk
129129
if (xyz_new[i] < 0)
130-
xyz_new[i] += (param->enCrossFOV ? param->sample_length[i] : 2*ABS(rnd_wlk)); // rnd_wlk is negative here
131-
else if (xyz_new[i] >= param->sample_length[i])
132-
xyz_new[i] -= (param->enCrossFOV ? param->sample_length[i] : 2*ABS(rnd_wlk)); // rnd_wlk is positive here
130+
xyz_new[i] += (param->enCrossFOV ? param->fov[i] : 2*ABS(rnd_wlk)); // rnd_wlk is negative here
131+
else if (xyz_new[i] >= param->fov[i])
132+
xyz_new[i] -= (param->enCrossFOV ? param->fov[i] : 2*ABS(rnd_wlk)); // rnd_wlk is positive here
133133
}
134134

135135
// ------ subscripts to linear indices ------
136136
ind = sub2ind(xyz_new[0]*param->scale2grid[0], xyz_new[1]*param->scale2grid[1], xyz_new[2]*param->scale2grid[2], param->fieldmap_size[0], param->fieldmap_size[1], param->fieldmap_size[2]);
137137
if(ind >= param->matrix_length || ind < 0)
138138
{
139-
printf("Error:spin=%d, ind=%" PRId64 ", %d,\n\tscale=(%.10f, %.10f, %.10f)\n\txyz=(%.10f, %.10f, %.10f)\n\tscale*xyz(%.10f, %.10f, %.10f)\n\tFoV=(%.10f, %.10f, %.10f)\n\t(%d, %d, %d)\n",spin_no, ind, current_timepoint, param->scale2grid[0], param->scale2grid[1], param->scale2grid[2], xyz_new[0], xyz_new[1], xyz_new[2], param->scale2grid[0]*xyz_new[0], param->scale2grid[1]*xyz_new[1], param->scale2grid[2]*xyz_new[2], param->sample_length[0], param->sample_length[1], param->sample_length[2], xyz_new[0] >= param->sample_length[0], xyz_new[1] >= param->sample_length[1], xyz_new[2] >= param->sample_length[2]);
139+
printf("Error:spin=%d, ind=%" PRId64 ", %d,\n\tscale=(%.10f, %.10f, %.10f)\n\txyz=(%.10f, %.10f, %.10f)\n\tscale*xyz(%.10f, %.10f, %.10f)\n\tFoV=(%.10f, %.10f, %.10f)\n\t(%d, %d, %d)\n",spin_no, ind, current_timepoint, param->scale2grid[0], param->scale2grid[1], param->scale2grid[2], xyz_new[0], xyz_new[1], xyz_new[2], param->scale2grid[0]*xyz_new[0], param->scale2grid[1]*xyz_new[1], param->scale2grid[2]*xyz_new[2], param->fov[0], param->fov[1], param->fov[2], xyz_new[0] >= param->fov[0], xyz_new[1] >= param->fov[1], xyz_new[2] >= param->fov[2]);
140140
return;
141141
}
142142
// ------ accumulate phase ------
@@ -240,12 +240,12 @@ void randPosGen(float *spin_position_xyz, const simulation_parameters &param)
240240
{
241241
float res[3];
242242
for (uint8_t i = 0; i < 3; i++)
243-
res[i] = param.sample_length[i] / param.fieldmap_size[i];
243+
res[i] = param.fov[i] / param.fieldmap_size[i];
244244

245245
std::mt19937 gen(param.seed);
246-
std::uniform_real_distribution<float> dist_initial_x(res[0], param.sample_length[0] - res[0]);
247-
std::uniform_real_distribution<float> dist_initial_y(res[1], param.sample_length[1] - res[1]);
248-
std::uniform_real_distribution<float> dist_initial_z(res[2], param.sample_length[2] - res[2]);
246+
std::uniform_real_distribution<float> dist_initial_x(res[0], param.fov[0] - res[0]);
247+
std::uniform_real_distribution<float> dist_initial_y(res[1], param.fov[1] - res[1]);
248+
std::uniform_real_distribution<float> dist_initial_z(res[2], param.fov[2] - res[2]);
249249

250250
for (size_t i = 0; i < param.n_spins; i++)
251251
{

src/shapes/cylinder.cu

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void cylinder::generate_shapes()
6161
float curr_BVF = 0;
6262
// srandom engine
6363
std::mt19937 gen(m_random_seed); // Mersenne Twister generator
64-
std::uniform_real_distribution<> dist(0.f, 1.f);
64+
std::uniform_real_distribution<float> dist(0.f, 1.f);
6565

6666
float distance, vol_cyl = 0, vol_cyl_total = 0, vol_tol = m_fov*m_fov*m_fov;
6767
auto start = std::chrono::high_resolution_clock::now();
@@ -181,7 +181,7 @@ void cylinder::generate_mask_fieldmap()
181181
theta_c2 = theta_c * theta_c;
182182
theta_s2 = 1. - theta_c2; // sin^2(theta)
183183

184-
ProgressBar bar{option::ShowPercentage{true}, option::Start{"["}, option::Fill{"="}, option::Lead{">"}, option::End{"]"}, option::FontStyles{std::vector<FontStyle>{FontStyle::bold}}};
184+
ProgressBar bar{option::ShowPercentage{true}, option::Start{"["}, option::Fill{"="}, option::Lead{">"}, option::End{"]"}};
185185
auto start = std::chrono::high_resolution_clock::now();
186186
for (size_t c = 0; c < m_cylinder_radii.size(); c++)
187187
{

src/shapes/shape_base.cu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,5 @@ void shape::print_info()
135135
std::cout << " Resolution: " << m_resolution << "\n";
136136
std::cout << " Blood parameters: dChi=" << m_dChi << ", Y=" << m_Y << "\n";
137137
std::cout << " Filename: " << m_filename << "\n";
138+
std::cout << " Seed: " << m_random_seed << "\n";
138139
}

src/shapes/shape_base.cuh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class shape
3939
std::string m_filename;
4040
float B0[3] = {0.f, 0.f, 1.f};
4141
bool m_calc_fieldmap;
42-
bool m_random_seed;
42+
size_t m_random_seed;
4343

4444
private:
4545
};

src/shapes/sphere.cu

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,11 @@ void sphere::generate_shapes()
5656

5757
// srandom engine
5858
std::mt19937 gen(m_random_seed); // Mersenne Twister generator
59-
std::uniform_real_distribution<> dist(0.f, 1.f);
59+
std::uniform_real_distribution<float> dist(0.f, 1.f);
6060

6161
float distance, vol_sph = 0, vol_tol = m_fov*m_fov*m_fov;
6262
int32_t progress = 0;
63+
ProgressBar bar{option::ShowPercentage{true}, option::Start{"["}, option::Fill{"="}, option::Lead{">"}, option::End{"]"}};
6364
auto start = std::chrono::high_resolution_clock::now();
6465
while(progress < 100)
6566
{
@@ -91,6 +92,7 @@ void sphere::generate_shapes()
9192
m_sphere_points.insert(m_sphere_points.end(), sph_pnt, sph_pnt+3);
9293
m_sphere_radii.push_back(radius);
9394
progress = 0.95 * 100*(100.*vol_sph/vol_tol/m_BVF); // 0.95 is a factor to compensate for spheres in the boundary
95+
bar.set_progress(progress);
9496
}
9597

9698
auto end = std::chrono::high_resolution_clock::now();

src/simulation_parameters.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
typedef struct simulation_parameters
3939
{
40-
double sample_length[3], scale2grid[3];
40+
double fov[3], scale2grid[3];
4141
double diffusivity[MAX_TISSUE_TYPE];
4242
float B0, c, s;
4343
float RF_FA_deg[MAX_RF], RF_PH_deg[MAX_RF];
@@ -48,7 +48,7 @@ typedef struct simulation_parameters
4848
float T1_ms[MAX_TISSUE_TYPE], T2_ms[MAX_TISSUE_TYPE];
4949
int32_t timestep_us, TR_us, TE_us[MAX_TE], RF_us[MAX_RF], dephasing_us[MAX_DEPHASE], gradient_us[MAX_GRADIENT];
5050
int32_t n_dummy_scan;
51-
uint32_t n_spins, n_timepoints, n_fieldmaps, n_TE, n_RF, n_dephasing, n_gradient, n_sample_length_scales, n_tissue_type;
51+
uint32_t n_spins, n_timepoints, n_fieldmaps, n_TE, n_RF, n_dephasing, n_gradient, n_fov_scale, n_tissue_type;
5252
uint32_t fieldmap_size[3], seed, max_iterations;
5353
int64_t matrix_length;
5454
bool enDebug, enCrossFOV, enRecordTrajectory, enProfiling;
@@ -76,7 +76,7 @@ typedef struct simulation_parameters
7676
{
7777
memset(fieldmap_size, 0, 3*sizeof(fieldmap_size[0]));
7878
memset(scale2grid, 0, 3*sizeof(scale2grid[0]));
79-
memset(sample_length, 0, 3*sizeof(sample_length[0]));
79+
memset(fov, 0, 3*sizeof(fov[0]));
8080
memset(TE_us, 0, MAX_TE*sizeof(TE_us[0]));
8181
memset(RF_FA_deg, 0, MAX_RF*sizeof(RF_FA_deg[0]));
8282
memset(RF_us, 0, MAX_RF*sizeof(RF_us[0]));
@@ -109,13 +109,13 @@ typedef struct simulation_parameters
109109
ss<<"RF time = "; for(int i=0; i<n_RF; i++) ss<<RF_us[i]*timestep_us<<' '; ss<<"us.\n";
110110
ss<<"dephasing = "; for(int i=0; i<n_dephasing; i++) ss<<dephasing_deg[i]<<' '; ss<<"deg.\n";
111111
ss<<"dephasing time = "; for(int i=0; i<n_dephasing; i++) ss<<dephasing_us[i]*timestep_us<<' '; ss<<"us.\n";
112-
ss<<"sample length = "<< sample_length[0] << " x " << sample_length[1] << " x " << sample_length[2] << " m" << '\n';
112+
ss<<"FoV = "<< fov[0] << " x " << fov[1] << " x " << fov[2] << " m" << '\n';
113113
ss<<"scale2grid = "<< scale2grid[0] << " x " << scale2grid[1] << " x " << scale2grid[2] << '\n';
114114
ss<<"fieldmap size = "<< fieldmap_size[0] << " x " << fieldmap_size[1] << " x " << fieldmap_size[2] << '\n';
115115
ss<<"matrix length = "<< matrix_length << '\n';
116116
ss<<"dummy scans = "<< n_dummy_scan<<'\n';
117117
ss<<"spins = "<< n_spins<<'\n';
118-
ss<<"samples scales = "<< n_sample_length_scales<<'\n';
118+
ss<<"FoV scales = "<< n_fov_scale<<'\n';
119119
ss<<"timepoints = "<< n_timepoints<<'\n';
120120
ss<<"fieldmaps = "<< n_fieldmaps<<'\n';
121121
ss<<"max iterations = "<< max_iterations<<'\n';
@@ -149,15 +149,15 @@ typedef struct simulation_parameters
149149
// M0
150150
variables_size_B += sizeof(float) * 3 * spin ;
151151
// M1
152-
variables_size_B += sizeof(float) * 3 * spin * n_TE * ((type == "cpu") ? n_sample_length_scales:1);
152+
variables_size_B += sizeof(float) * 3 * spin * n_TE * ((type == "cpu") ? n_fov_scale:1);
153153
// XYZ0
154154
variables_size_B += sizeof(float) * 3 * spin ;
155155
// XYZ0_scaled
156156
variables_size_B += sizeof(float) * ((type == "gpu") ? 3 * spin : 0);
157157
// XYZ1
158-
variables_size_B += sizeof(float) * 3 * spin * (enRecordTrajectory ? n_timepoints * (n_dummy_scan+1) : 1) * ((type == "cpu") ? n_sample_length_scales:1);
158+
variables_size_B += sizeof(float) * 3 * spin * (enRecordTrajectory ? n_timepoints * (n_dummy_scan+1) : 1) * ((type == "cpu") ? n_fov_scale:1);
159159
// T
160-
variables_size_B += sizeof(uint8_t) * spin * n_TE * ((type == "cpu") ? n_sample_length_scales:1);
160+
variables_size_B += sizeof(uint8_t) * spin * n_TE * ((type == "cpu") ? n_fov_scale:1);
161161
size_t variables_size_MB = variables_size_B / B2MB;
162162

163163
return data_size_MB + variables_size_MB;

0 commit comments

Comments
 (0)