Skip to content

Commit 29279b8

Browse files
committed
update readme
1 parent ed0043c commit 29279b8

File tree

6 files changed

+41
-22
lines changed

6 files changed

+41
-22
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ The precompiled mexfiles are only available for Windows operating system and Ubu
3737

3838
### Building MULTEM for Matlab
3939

40-
The following steps have been tested and found to work with Matlab 2022b and CUDA 11.8. It is assumed that a C++ compiler such as Visual Studio 2019 Community, g++11.3 or Clang (Xcode 10.x) is installed on your operating system. Additionally, MULTEM also requires the fftw3, BLAS, and LAPACK libraries to be installed.The following steps have been tested and found to work with Matlab 2022b and CUDA 11.8. It is assumed that a C++ compiler such as Visual Studio 2019 Community, g++11.3 or Clang (Xcode 10.x) is installed on your operating system. Additionally, MULTEM also requires the fftw3, BLAS, and LAPACK libraries to be installed.
40+
The following steps have been tested and found to work with Matlab 2022b and CUDA 11.8. It is assumed that a C++ compiler such as Visual Studio 2022 Community, g++11.3 or Clang (Xcode 10.x) is installed on your operating system. Additionally, MULTEM also requires the fftw3, BLAS, and LAPACK libraries to be installed.The following steps have been tested and found to work with Matlab 2022b and CUDA 11.8. It is assumed that a C++ compiler such as Visual Studio 2022 Community, g++11.3 or Clang (Xcode 10.x) is installed on your operating system. Additionally, MULTEM also requires the fftw3, BLAS, and LAPACK libraries to be installed.
4141

4242
- Firstly, a C++ compiler must be set for Matlab by executing the following command: `mex -setup cpp`. It is important to note that Matlab 2022b only supports the compilers listed above.
4343
- Next, add the following folders to the Matlab path: crystalline_materials, matlab_functions, and mex_bin.
@@ -50,7 +50,7 @@ The following steps have been tested and found to work with Matlab 2022b and CUD
5050

5151
**for Windows:**
5252

53-
- Verify the installation of Visual studio 2019 community.
53+
- Verify the installation of Visual studio 2022 community.
5454
- Verify the installation of Cuda 11.8 (https://developer.nvidia.com/cuda-downloads).
5555

5656
**for Linux:**

compile_mex_multem.m

+19-1
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,22 @@
4141
for file=files
4242
disp(['Compiling ' file{1}])
4343
run(['mex_files_multem/',file{1}])
44-
end
44+
end
45+
46+
% clc; clear all;
47+
% addpath('matlab_functions')
48+
49+
% files = {'mex_incident_wave',...
50+
% 'mex_propagate',...
51+
% 'mex_microscope_aberrations',...
52+
% 'mex_projected_potential',...
53+
% 'mex_transmission_function',...
54+
% 'mex_multem',...
55+
% 'mex_wave_function',...
56+
% 'mex_apply_ctf'
57+
% };
58+
59+
% for file=files
60+
% disp(['Compiling ' file{1}])
61+
% run(['mex_files_multem/',file{1}])
62+
% end

matlab_functions/ilm_mex.m

+3-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
CUDA_PATH = '/usr/local/cuda-10.0';
3131
end
3232
end
33-
33+
% CUDA_PATH = 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8';
3434
CUDA_PATH = ilm_replace_filesep(CUDA_PATH);
3535

3636
%%%%%%%%%%%%%%%%%%%% get cuda version %%%%%%%%%%%%%%%%%%%%%%%
@@ -88,7 +88,8 @@
8888
CARD_86="-gencode=arch=compute_86,code=\"sm_86,compute_86\"";
8989
CARD_87="-gencode=arch=compute_87,code=\"sm_87,compute_87\"";
9090
CARD_MULT = join([CARD_35, CARD_50, CARD_60, CARD_70, CARD_75], ' ');
91-
91+
92+
CARD_MULT = join([CARD_50, CARD_60, CARD_70, CARD_75], ' ');
9293
if CUDA_VERSION_D >= 11.0
9394
CARD_MULT = join([CARD_MULT CARD_86, CARD_87], ' ');
9495
end

matlab_functions/mex_CUDA_win64.xml

+14-14
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<config
55
Name="NVIDIA CUDA Compiler"
66
ShortName="nvcc"
7-
HostCompiler="MSVCPP160"
7+
HostCompiler="MSVCPP190"
88
Manufacturer="NVIDIA"
99
Version="XXX_CUDA_VER"
1010
Language="CUDA"
@@ -41,7 +41,7 @@
4141
INCLUDE="-I&quot;$MATLABROOT\extern\include&quot;"
4242

4343
ARCH_FLAGS="XXX_ARCH_FLAGS"
44-
NVCC_FLAGS="--std=c++14 --default-stream per-thread --expt-extended-lambda --expt-relaxed-constexpr $ARCH_FLAGS"
44+
NVCC_FLAGS="--std=c++14 --default-stream per-thread --expt-extended-lambda --expt-relaxed-constexpr -allow-unsupported-compiler $ARCH_FLAGS"
4545

4646
COMPILER="nvcc"
4747
COMPFLAGS="--compiler-options=/Zp8,/GR,/bigobj,/W3,/EHs,/nologo,/MD,/arch:AVX2 $NVCC_FLAGS"
@@ -76,19 +76,19 @@
7676
<and>
7777
<envVarExists name="ProgramFiles(x86)" />
7878
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
79-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value" />
79+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value" />
8080
<cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%" />
8181
</and>
8282
<and>
8383
<envVarExists name="ProgramFiles(x86)" />
8484
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
85-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value" />
85+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value" />
8686
<cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%" />
8787
</and>
8888
<and>
8989
<envVarExists name="ProgramFiles(x86)" />
9090
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
91-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value" />
91+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value" />
9292
<cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%" />
9393
</and>
9494
</or>
@@ -106,17 +106,17 @@
106106
<and>
107107
<envVarExists name="ProgramFiles(x86)" />
108108
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
109-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value" />
109+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value" />
110110
</and>
111111
<and>
112112
<envVarExists name="ProgramFiles(x86)" />
113113
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
114-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value" />
114+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value" />
115115
</and>
116116
<and>
117117
<envVarExists name="ProgramFiles(x86)" />
118118
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
119-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value" />
119+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value" />
120120
</and>
121121
</or>
122122
</VSINSTALLDIR>
@@ -125,19 +125,19 @@
125125
<and>
126126
<envVarExists name="ProgramFiles(x86)" />
127127
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
128-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value" />
128+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value" />
129129
<cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%\VC\Tools\MSVC\%a" />
130130
</and>
131131
<and>
132132
<envVarExists name="ProgramFiles(x86)" />
133133
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
134-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value" />
134+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value" />
135135
<cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%\VC\Tools\MSVC\%a" />
136136
</and>
137137
<and>
138138
<envVarExists name="ProgramFiles(x86)" />
139139
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
140-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value" />
140+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value" />
141141
<cmdReturns name="set &quot;vcroot=$$&quot;&amp;for /f &quot;delims= &quot; %a in ('type &quot;$$\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt&quot;') do @if exist &quot;$$\VC\Tools\MSVC\%a\bin\HostX64\x64\cl.exe&quot; call echo %vcroot%\VC\Tools\MSVC\%a" />
142142
</and>
143143
</or>
@@ -147,21 +147,21 @@
147147
<and>
148148
<envVarExists name="ProgramFiles(x86)" />
149149
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
150-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value" />
150+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Enterprise -property installationPath -format value" />
151151
<fileExists name="$$\VC\Auxiliary\Build\vcvarsall.bat" />
152152
<dirExists name="$$"/>
153153
</and>
154154
<and>
155155
<envVarExists name="ProgramFiles(x86)" />
156156
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
157-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value" />
157+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Professional -property installationPath -format value" />
158158
<fileExists name="$$\VC\Auxiliary\Build\vcvarsall.bat" />
159159
<dirExists name="$$"/>
160160
</and>
161161
<and>
162162
<envVarExists name="ProgramFiles(x86)" />
163163
<fileExists name="$$\Microsoft Visual Studio\Installer\vswhere.exe" />
164-
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[16.0,17.0)&quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value" />
164+
<cmdReturns name="&quot;$$\\vswhere.exe&quot; -version &quot;[17.0,18.0)&quot; -products Microsoft.VisualStudio.Product.Community -property installationPath -format value" />
165165
<fileExists name="$$\VC\Auxiliary\Build\vcvarsall.bat" />
166166
<dirExists name="$$"/>
167167
</and>

mex_examples_multem/example_MULTEM_HRTEM.m

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
%%%%%%%%%%%%%%%%%%%%% Set system configuration %%%%%%%%%%%%%%%%%%%%%
1515
input_multem.system_conf.precision = 1; % eP_Float = 1, eP_double = 2
16-
input_multem.system_conf.device = 1; % eD_CPU = 1, eD_GPU = 2
16+
input_multem.system_conf.device = 2; % eD_CPU = 1, eD_GPU = 2
1717
input_multem.system_conf.cpu_nthread = 1;
1818
input_multem.system_conf.gpu_device = 0;
1919

@@ -59,7 +59,7 @@
5959
input_multem.phi = 0.0; % Till ilumination (�)
6060

6161
%%%%%%%%%%%%%%%%%%%%%% Illumination model %%%%%%%%%%%%%%%%%%%%%%%%%%
62-
input_multem.illumination_model = 2; % 1: coherente mode, 2: Partial coherente mode, 3: transmission cross coefficient, 4: Numerical integration
62+
input_multem.illumination_model = 1; % 1: coherente mode, 2: Partial coherente mode, 3: transmission cross coefficient, 4: Numerical integration
6363
input_multem.temporal_spatial_incoh = 1; % 1: Temporal and Spatial, 2: Temporal, 3: Spatial
6464

6565
%%%%%%%%%%%%%%%%%%%%%%%% Objective lens %%%%%%%%%%%%%%%%%%%%%%%%

src/gpu_fcns.cuh

+1-1
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ namespace mt
649649
// phase factor 2d
650650
template <class TGrid, class T>
651651
__global__ void exp_r_factor_2d(TGrid grid_2d, Value_type<TGrid> gx,
652-
Value_type<TGrid> gy, rVector<T> psi_i, rVector<T> psi_o, scaling)
652+
Value_type<TGrid> gy, rVector<T> psi_i, rVector<T> psi_o, bool scaling)
653653
{
654654
int iy = threadIdx.x + blockIdx.x*blockDim.x;
655655
int ix = threadIdx.y + blockIdx.y*blockDim.y;

0 commit comments

Comments
 (0)