From c1803bf5f14e3f776083ba4b0a8896d53a142e04 Mon Sep 17 00:00:00 2001 From: Jonathan Rudolph Date: Thu, 17 Jul 2025 16:40:33 -0700 Subject: [PATCH 1/4] Update for 64-bit OpenCL --- common/cputypes.h | 4 +++- common/problem.cpp | 3 +-- makefile.vc | 22 +++++++++++----------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/common/cputypes.h b/common/cputypes.h index 8839f24ec..678f5792e 100644 --- a/common/cputypes.h +++ b/common/cputypes.h @@ -106,7 +106,9 @@ #if defined(_WIN64) #define CLIENT_OS OS_WIN64 #define CLIENT_OS_NAME "Win64" - #if defined(_M_AMD64) + #if defined(OPENCL) + #define CLIENT_CPU CPU_OPENCL + #elif defined(_M_AMD64) #define CLIENT_CPU CPU_AMD64 #elif defined(_M_IA64) #define CLIENT_CPU CPU_IA64 diff --git a/common/problem.cpp b/common/problem.cpp index 2cda68d5c..728956762 100644 --- a/common/problem.cpp +++ b/common/problem.cpp @@ -86,8 +86,7 @@ static unsigned int __problem_counter = 0; */ /* ------------------------------------------------------------------- */ - -#if (SIZEOF_LONG == 8) /* SIZEOF_LONG is defined in cputypes.h */ +#if (SIZEOF_LONG == 8 || (CLIENT_OS == OS_WIN64 && CLIENT_CPU == CPU_OPENCL)) /* SIZEOF_LONG is defined in cputypes.h */ # include "pack8.h" #else # include "pack4.h" diff --git a/makefile.vc b/makefile.vc index 257e85911..bbcb5b593 100644 --- a/makefile.vc +++ b/makefile.vc @@ -7,7 +7,7 @@ #PROCESSOR_ARCHITECTURE = AMD64 #PROCESSOR_ARCHITECTURE = cuda #PROCESSOR_ARCHITECTURE = ATI_STREAM -#PROCESSOR_ARCHITECTURE = OPENCL +PROCESSOR_ARCHITECTURE = OPENCL #PROCESSOR_ARCHITECTURE = arm BASENAME = dnetc @@ -65,9 +65,9 @@ ZIPSUFFIX = win32-x86-stream !elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL" HAVE_OGR_CORES = 0 OPTS_CC_CPU = -OPTS_M_PLAT = IX86 +OPTS_M_PLAT = AMD64 CHIPSRCPATH = plat -ZIPSUFFIX = win32-x86-opencl +ZIPSUFFIX = win64-amd64-opencl !elseif "$(PROCESSOR_ARCHITECTURE)" == "arm" HAVE_OGR_CORES = 0 OPTS_CC_CPU = /D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE=1 @@ -221,8 +221,8 @@ ZIPEXTRAS = $(ZIPEXTRAS) docs\readme.stream # OpenCL support !if "$(PROCESSOR_ARCHITECTURE)" == "OPENCL" -OPTS_MSVC = $(OPTS_MSVC) -I"$(OPENCLDIR)include" -Iplat\opencl -Iplat\x86 -OPTS_LIBS = $(OPTS_LIBS) "$(OPENCLDIR)lib\x86\OpenCL.lib" +OPTS_MSVC = $(OPTS_MSVC) -I"$(OPENCLDIR)include" -Iplat\opencl -Iplat\amd64 +OPTS_LIBS = $(OPTS_LIBS) "$(OPENCLDIR)lib\x86_64\opencl.lib" ZIPEXTRAS = $(ZIPEXTRAS) docs\readme.opencl !endif @@ -601,10 +601,10 @@ $(VC_CHECK): !elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL" -{$(CHIPSRCPATH)/x86}.asm{$(OUTPUTPATH)}.obj: - nasmw -o $(@:/=\) -f win32 -i $(CHIPSRCPATH:/=\) $(**:/=\) +{$(CHIPSRCPATH)/amd64}.asm{$(OUTPUTPATH)}.obj: + nasmw -o $(@:/=\) -f win64 -i $(CHIPSRCPATH:/=\) $(**:/=\) -{$(CHIPSRCPATH)/x86}.cpp{$(OUTPUTPATH)}.obj:: +{$(CHIPSRCPATH)/amd64}.cpp{$(OUTPUTPATH)}.obj:: cl -c $(OPTS_MSVC) -Ox -Fo$(OUTPUTPATH)\ $< {$(CHIPSRCPATH)/opencl}.cpp{$(OUTPUTPATH)}.obj:: @@ -648,21 +648,21 @@ $(RES_FILE): $(RC_FILE) # the screensaver's 4.0 tag will be adjusted to 3.10 by the _client_ if running on a 3.x platform $(BASENAME).scr: $(VC_CHECK) $(SCR_OBJS) $(RES_FILE) - link $(OPTS_LINK) /SUBSYSTEM:WINDOWS,4.00 /OUT:$(BASENAME).scr $(OPTS_LIBS) $(SCR_OBJS) $(RES_FILE) + link $(OPTS_LINK) /SUBSYSTEM:WINDOWS,6.1 /OUT:$(BASENAME).scr $(OPTS_LIBS) $(SCR_OBJS) $(RES_FILE) !if defined(EXECOMPRESSOR) && !defined(DEBUG) $(EXECOMPRESSOR) $(BASENAME).scr $(EXECOMPRESSOR2) !endif $(BASENAME).com: $(VC_CHECK) $(CUI_OBJS) - link $(OPTS_LINK) /SUBSYSTEM:CONSOLE,3.10 /OUT:$(BASENAME).com /NODEFAULTLIB $(OPTS_LIBS) $(CUI_OBJS) + link $(OPTS_LINK) /SUBSYSTEM:CONSOLE,6.1 /OUT:$(BASENAME).com /NODEFAULTLIB $(OPTS_LIBS) $(CUI_OBJS) #!if defined(EXECOMPRESSOR) && !defined(DEBUG) # $(EXECOMPRESSOR) $(BASENAME).com $(EXECOMPRESSOR2) #!endif $(BASENAME).exe: $(VC_CHECK) $(PLAT_OBJS) $(COMMON_OBJS) $(CHIP_OBJS) $(RC5_72_OBJS) $(OGR_OBJS) $(OGRNG_OBJS) $(RES_FILE) - link $(OPTS_LINK) /SUBSYSTEM:WINDOWS,3.10 /OUT:$(BASENAME).exe /MAP:$(BASENAME).map $(OPTS_LIBS) $(PLAT_OBJS) $(COMMON_OBJS) $(CHIP_OBJS) $(RC5_72_OBJS) $(OGR_OBJS) $(OGRNG_OBJS) $(RES_FILE) + link $(OPTS_LINK) /SUBSYSTEM:WINDOWS,6.1 /OUT:$(BASENAME).exe /MAP:$(BASENAME).map $(OPTS_LIBS) $(PLAT_OBJS) $(COMMON_OBJS) $(CHIP_OBJS) $(RC5_72_OBJS) $(OGR_OBJS) $(OGRNG_OBJS) $(RES_FILE) !if defined(EXECOMPRESSOR) && !defined(DEBUG) $(EXECOMPRESSOR) $(BASENAME).exe $(EXECOMPRESSOR2) !endif From b96be6b2a20e1e0e8cd1f6df50eaf2d23f08bf7d Mon Sep 17 00:00:00 2001 From: Jonathan Rudolph Date: Thu, 17 Jul 2025 16:44:21 -0700 Subject: [PATCH 2/4] Recommented processor architecture --- makefile.vc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefile.vc b/makefile.vc index bbcb5b593..d8ce9155a 100644 --- a/makefile.vc +++ b/makefile.vc @@ -7,7 +7,7 @@ #PROCESSOR_ARCHITECTURE = AMD64 #PROCESSOR_ARCHITECTURE = cuda #PROCESSOR_ARCHITECTURE = ATI_STREAM -PROCESSOR_ARCHITECTURE = OPENCL +#PROCESSOR_ARCHITECTURE = OPENCL #PROCESSOR_ARCHITECTURE = arm BASENAME = dnetc From f15053163950d4e1658f8c3651bc173e9b647c3b Mon Sep 17 00:00:00 2001 From: Jonathan Rudolph Date: Thu, 17 Jul 2025 17:05:27 -0700 Subject: [PATCH 3/4] Revert Windows subsystem versions --- makefile.vc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/makefile.vc b/makefile.vc index d8ce9155a..7aef7768b 100644 --- a/makefile.vc +++ b/makefile.vc @@ -648,21 +648,21 @@ $(RES_FILE): $(RC_FILE) # the screensaver's 4.0 tag will be adjusted to 3.10 by the _client_ if running on a 3.x platform $(BASENAME).scr: $(VC_CHECK) $(SCR_OBJS) $(RES_FILE) - link $(OPTS_LINK) /SUBSYSTEM:WINDOWS,6.1 /OUT:$(BASENAME).scr $(OPTS_LIBS) $(SCR_OBJS) $(RES_FILE) + link $(OPTS_LINK) /SUBSYSTEM:WINDOWS,4.00 /OUT:$(BASENAME).scr $(OPTS_LIBS) $(SCR_OBJS) $(RES_FILE) !if defined(EXECOMPRESSOR) && !defined(DEBUG) $(EXECOMPRESSOR) $(BASENAME).scr $(EXECOMPRESSOR2) !endif $(BASENAME).com: $(VC_CHECK) $(CUI_OBJS) - link $(OPTS_LINK) /SUBSYSTEM:CONSOLE,6.1 /OUT:$(BASENAME).com /NODEFAULTLIB $(OPTS_LIBS) $(CUI_OBJS) + link $(OPTS_LINK) /SUBSYSTEM:CONSOLE,3.10 /OUT:$(BASENAME).com /NODEFAULTLIB $(OPTS_LIBS) $(CUI_OBJS) #!if defined(EXECOMPRESSOR) && !defined(DEBUG) # $(EXECOMPRESSOR) $(BASENAME).com $(EXECOMPRESSOR2) #!endif $(BASENAME).exe: $(VC_CHECK) $(PLAT_OBJS) $(COMMON_OBJS) $(CHIP_OBJS) $(RC5_72_OBJS) $(OGR_OBJS) $(OGRNG_OBJS) $(RES_FILE) - link $(OPTS_LINK) /SUBSYSTEM:WINDOWS,6.1 /OUT:$(BASENAME).exe /MAP:$(BASENAME).map $(OPTS_LIBS) $(PLAT_OBJS) $(COMMON_OBJS) $(CHIP_OBJS) $(RC5_72_OBJS) $(OGR_OBJS) $(OGRNG_OBJS) $(RES_FILE) + link $(OPTS_LINK) /SUBSYSTEM:WINDOWS,3.10 /OUT:$(BASENAME).exe /MAP:$(BASENAME).map $(OPTS_LIBS) $(PLAT_OBJS) $(COMMON_OBJS) $(CHIP_OBJS) $(RC5_72_OBJS) $(OGR_OBJS) $(OGRNG_OBJS) $(RES_FILE) !if defined(EXECOMPRESSOR) && !defined(DEBUG) $(EXECOMPRESSOR) $(BASENAME).exe $(EXECOMPRESSOR2) !endif From b249d71adba90a6cc60b275c6e7ff3d2d678ec53 Mon Sep 17 00:00:00 2001 From: Jonathan Rudolph Date: Fri, 18 Jul 2025 17:18:43 -0700 Subject: [PATCH 4/4] Allow both 32 and 64 bit OpenCL builds via uncommenting --- makefile.vc | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/makefile.vc b/makefile.vc index 7aef7768b..78567dee2 100644 --- a/makefile.vc +++ b/makefile.vc @@ -7,7 +7,8 @@ #PROCESSOR_ARCHITECTURE = AMD64 #PROCESSOR_ARCHITECTURE = cuda #PROCESSOR_ARCHITECTURE = ATI_STREAM -#PROCESSOR_ARCHITECTURE = OPENCL +#PROCESSOR_ARCHITECTURE = OPENCL32 +#PROCESSOR_ARCHITECTURE = OPENCL64 #PROCESSOR_ARCHITECTURE = arm BASENAME = dnetc @@ -62,7 +63,13 @@ OPTS_M_PLAT = IX86 CHIPSRCPATH = plat #CHIPSRCPATH = plat/$(PROCESSOR_ARCHITECTURE) ZIPSUFFIX = win32-x86-stream -!elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL" +!elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL32" +HAVE_OGR_CORES = 0 +OPTS_CC_CPU = +OPTS_M_PLAT = IX86 +CHIPSRCPATH = plat +ZIPSUFFIX = win32-x86-opencl +!elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL64" HAVE_OGR_CORES = 0 OPTS_CC_CPU = OPTS_M_PLAT = AMD64 @@ -220,7 +227,13 @@ ZIPEXTRAS = $(ZIPEXTRAS) docs\readme.stream # OpenCL support -!if "$(PROCESSOR_ARCHITECTURE)" == "OPENCL" +!if "$(PROCESSOR_ARCHITECTURE)" == "OPENCL32" +OPTS_MSVC = $(OPTS_MSVC) -I"$(OPENCLDIR)include" -Iplat\opencl -Iplat\x86 +OPTS_LIBS = $(OPTS_LIBS) "$(OPENCLDIR)lib\x86\OpenCL.lib" +ZIPEXTRAS = $(ZIPEXTRAS) docs\readme.opencl +!endif + +!if "$(PROCESSOR_ARCHITECTURE)" == "OPENCL64" OPTS_MSVC = $(OPTS_MSVC) -I"$(OPENCLDIR)include" -Iplat\opencl -Iplat\amd64 OPTS_LIBS = $(OPTS_LIBS) "$(OPENCLDIR)lib\x86_64\opencl.lib" ZIPEXTRAS = $(ZIPEXTRAS) docs\readme.opencl @@ -406,7 +419,7 @@ RC5_72_OBJS = \ $(OUTPUTPATH)/adl.obj OPTS_MSVC = $(OPTS_MSVC) -DHAVE_RC5_72_CORES -DATI_STREAM -DDYN_TIMESLICE -!elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL" +!elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL32" || "$(PROCESSOR_ARCHITECTURE)" == "OPENCL64" RC5_72_OBJS = \ $(OUTPUTPATH)/ocl_info.obj \ $(OUTPUTPATH)/ocl_setup.obj \ @@ -599,7 +612,21 @@ $(VC_CHECK): {$(RC572SRCPATH)/stream}.cpp{$(OUTPUTPATH)}.obj:: cl -c $(OPTS_MSVC) -Ox -Fo$(OUTPUTPATH)\ $< -!elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL" +!elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL32" + +{$(CHIPSRCPATH)/x86}.asm{$(OUTPUTPATH)}.obj: + nasmw -o $(@:/=\) -f win32 -i $(CHIPSRCPATH:/=\) $(**:/=\) + +{$(CHIPSRCPATH)/x86}.cpp{$(OUTPUTPATH)}.obj:: + cl -c $(OPTS_MSVC) -Ox -Fo$(OUTPUTPATH)\ $< + +{$(CHIPSRCPATH)/opencl}.cpp{$(OUTPUTPATH)}.obj:: + cl -c $(OPTS_MSVC) -Ox -Fo$(OUTPUTPATH)\ $< + +{$(RC572SRCPATH)/opencl}.cpp{$(OUTPUTPATH)}.obj:: + cl -c -O2 $(OPTS_MSVC) -Fo$(OUTPUTPATH)\ $< + +!elseif "$(PROCESSOR_ARCHITECTURE)" == "OPENCL64" {$(CHIPSRCPATH)/amd64}.asm{$(OUTPUTPATH)}.obj: nasmw -o $(@:/=\) -f win64 -i $(CHIPSRCPATH:/=\) $(**:/=\)