Skip to content

Commit 86fa514

Browse files
andystimeclaude
andcommitted
fix: include TensorFusion transport libraries in LD_PRELOAD
Problem: - GPU interception not working in containers on Mac - libteleport.so and libaccelerator libraries missing from LD_PRELOAD - Only vendor-specific libraries (libcuda.so, libnvidia-ml.so) were detected - FindActualLibraryFiles patterns only matched vendor libs, not TensorFusion libs - Result: GPU calls not redirected to remote worker, apps try to use local GPU Root Cause: GetLibraryNames() and FindActualLibraryFiles() patterns only included vendor-specific libraries (libcuda, libnvidia, libamdhip), but excluded TensorFusion transport layer libraries: - libteleport.so - Remote GPU transport protocol - libaccelerator_*.so - GPU call acceleration layer These libraries are essential for remote GPU functionality but were missing from the preload list, causing GPU interception to fail. Solution: 1. Updated GetLibraryNames() to include TensorFusion libraries: - NVIDIA: + libteleport.so, libaccelerator_nvidia-linux-amd64.so - AMD/Hygon: + libteleport.so, libaccelerator_amd-linux-amd64.so 2. Updated FindActualLibraryFiles() patterns: - NVIDIA: + "libteleport", "libaccelerator" - AMD/Hygon: + "libteleport", "libaccelerator" Now LD_PRELOAD includes all required libraries: ``` LD_PRELOAD="/opt/gpugo/libs/libcuda.so: /opt/gpugo/libs/libnvidia-ml.so: /opt/gpugo/libs/libteleport.so: /opt/gpugo/libs/libaccelerator_nvidia-linux-amd64.so" ``` Verified in container: - All .so files present in /opt/gpugo/libs/ - Updated code will include them in /etc/environment - GPU calls will be properly intercepted and redirected Changes: - internal/studio/env.go: Add TensorFusion libs to GetLibraryNames - internal/studio/env.go: Add TensorFusion patterns to FindActualLibraryFiles This fixes GPU interception on all platforms (Mac, Linux, Windows) ensuring remote GPU functionality works correctly. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 17b51e2 commit 86fa514

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

internal/studio/env.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ type GPUEnvResult struct {
6060
func GetLibraryNames(vendor GPUVendor) []string {
6161
switch vendor {
6262
case VendorNvidia:
63-
return []string{"libcuda.so", "libnvidia-ml.so"}
63+
return []string{"libcuda.so", "libnvidia-ml.so", "libteleport.so", "libaccelerator_nvidia-linux-amd64.so"}
6464
case VendorAMD, VendorHygon:
65-
return []string{"libamdhip64.so"}
65+
return []string{"libamdhip64.so", "libteleport.so", "libaccelerator_amd-linux-amd64.so"}
6666
default:
6767
return []string{}
6868
}
@@ -98,9 +98,9 @@ func FindActualLibraryFiles(cachePath string, vendor GPUVendor) []string {
9898
var patterns []string
9999
switch vendor {
100100
case VendorNvidia:
101-
patterns = []string{"libcuda", "libnvidia", "nvcuda", "nvml"}
101+
patterns = []string{"libcuda", "libnvidia", "nvcuda", "nvml", "libteleport", "libaccelerator"}
102102
case VendorAMD, VendorHygon:
103-
patterns = []string{"libamdhip", "librocm", "amdhip"}
103+
patterns = []string{"libamdhip", "librocm", "amdhip", "libteleport", "libaccelerator"}
104104
}
105105

106106
for _, entry := range entries {

0 commit comments

Comments
 (0)