Skip to content

Instantly share code, notes, and snippets.

@iris-garden
Created September 22, 2023 18:28
Show Gist options
  • Save iris-garden/bfacd8246bb8b29cd67caea063273c16 to your computer and use it in GitHub Desktop.
Save iris-garden/bfacd8246bb8b29cd67caea063273c16 to your computer and use it in GitHub Desktop.
hail log dataproc notebook slowdown
2023-09-22 17:09:54.767 SparkContext: INFO: Running Spark version 3.3.0
2023-09-22 17:09:54.830 ResourceUtils: INFO: ==============================================================
2023-09-22 17:09:54.831 ResourceUtils: INFO: No custom resources configured for spark.driver.
2023-09-22 17:09:54.831 ResourceUtils: INFO: ==============================================================
2023-09-22 17:09:54.832 SparkContext: INFO: Submitted application: Hail
2023-09-22 17:09:54.842 SparkContext: INFO: Spark configuration:
spark.app.name=Hail
spark.app.startTime=1695402594764
spark.app.submitTime=1695402594229
spark.checkpoint.compress=true
spark.dataproc.sql.joinConditionReorder.enabled=true
spark.dataproc.sql.local.rank.pushdown.enabled=true
spark.dataproc.sql.optimizer.leftsemijoin.conversion.enabled=true
spark.dataproc.sql.parquet.enableFooterCache=true
spark.driver.extraClassPath=/opt/conda/miniconda3/lib/python3.10/site-packages/hail/backend/hail-all-spark.jar,/opt/conda/miniconda3/lib/python3.10/site-packages/sparkmonitor/listener.jar
spark.driver.extraJavaOptions=-XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Xss4M
spark.driver.maxResultSize=0
spark.driver.memory=41g
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.maxExecutors=10000
spark.dynamicAllocation.minExecutors=1
spark.eventLog.dir=gs://dataproc-temp-us-central1-842871226259-nmtwlbu8/715f1e4f-db9f-4756-81fd-3031c77879b3/spark-job-history
spark.eventLog.enabled=true
spark.executor.cores=4
spark.executor.extraClassPath=./hail-all-spark.jar
spark.executor.extraJavaOptions=-XX:+IgnoreUnrecognizedVMOptions --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.cs=ALL-UNNAMED --add-opens=java.base/sun.security.action=ALL-UNNAMED --add-opens=java.base/sun.util.calendar=ALL-UNNAMED --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Xss4M
spark.executor.instances=2
spark.executor.memory=5837m
spark.executor.memoryOverhead=8755m
spark.executorEnv.HAIL_WORKER_OFF_HEAP_MEMORY_PER_CORE_MB=3648
spark.executorEnv.OPENBLAS_NUM_THREADS=1
spark.executorEnv.PYTHONHASHSEED=0
spark.extraListeners=sparkmonitor.listener.JupyterSparkMonitorListener
spark.hadoop.hive.execution.engine=mr
spark.hadoop.io.compression.codecs=org.apache.hadoop.io.compress.DefaultCodec,is.hail.io.compress.BGzipCodec,is.hail.io.compress.BGzipCodecTbi,org.apache.hadoop.io.compress.GzipCodec
spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2
spark.hadoop.mapreduce.input.fileinputformat.split.minsize=0
spark.history.fs.logDirectory=gs://dataproc-temp-us-central1-842871226259-nmtwlbu8/715f1e4f-db9f-4756-81fd-3031c77879b3/spark-job-history
spark.jars=file:/opt/conda/miniconda3/lib/python3.10/site-packages/hail/backend/hail-all-spark.jar,file:/opt/conda/miniconda3/lib/python3.10/site-packages/sparkmonitor/listener.jar
spark.kryo.registrator=is.hail.kryo.HailKryoRegistrator
spark.kryoserializer.buffer.max=1g
spark.logConf=true
spark.master=yarn
spark.memory.storageFraction=0.2
spark.metrics.namespace=app_name:${spark.app.name}.app_id:${spark.app.id}
spark.repl.local.jars=file:///opt/conda/miniconda3/lib/python3.10/site-packages/hail/backend/hail-all-spark.jar,file:///opt/conda/miniconda3/lib/python3.10/site-packages/sparkmonitor/listener.jar
spark.rpc.message.maxSize=512
spark.scheduler.minRegisteredResourcesRatio=0.0
spark.scheduler.mode=FAIR
spark.serializer=org.apache.spark.serializer.KryoSerializer
spark.shuffle.service.enabled=true
spark.speculation=true
spark.sql.adaptive.enabled=true
spark.sql.autoBroadcastJoinThreshold=43m
spark.sql.catalogImplementation=hive
spark.sql.cbo.enabled=true
spark.sql.cbo.joinReorder.enabled=true
spark.sql.parquet.enableNestedColumnVectorizedReader=true
spark.submit.deployMode=client
spark.submit.pyFiles=
spark.task.maxFailures=20
spark.ui.port=0
spark.ui.showConsoleProgress=false
spark.yarn.am.memory=640m
spark.yarn.dist.jars=file:///opt/conda/miniconda3/lib/python3.10/site-packages/hail/backend/hail-all-spark.jar,file:///opt/conda/miniconda3/lib/python3.10/site-packages/sparkmonitor/listener.jar
spark.yarn.historyServer.address=notebook-slowdown-repro-m:18080
spark.yarn.isPython=true
spark.yarn.jars=local:/usr/lib/spark/jars/*
spark.yarn.unmanagedAM.enabled=true
2023-09-22 17:09:54.971 ResourceProfile: INFO: Default ResourceProfile created, executor resources: Map(memoryOverhead -> name: memoryOverhead, amount: 8755, script: , vendor: , cores -> name: cores, amount: 4, script: , vendor: , memory -> name: memory, amount: 5837, script: , vendor: , offHeap -> name: offHeap, amount: 0, script: , vendor: ), task resources: Map(cpus -> name: cpus, amount: 1.0)
2023-09-22 17:09:54.989 ResourceProfile: INFO: Limiting resource is cpus at 4 tasks per executor
2023-09-22 17:09:54.992 ResourceProfileManager: INFO: Added ResourceProfile id: 0
2023-09-22 17:09:55.082 SecurityManager: INFO: Changing view acls to: root
2023-09-22 17:09:55.083 SecurityManager: INFO: Changing modify acls to: root
2023-09-22 17:09:55.083 SecurityManager: INFO: Changing view acls groups to:
2023-09-22 17:09:55.083 SecurityManager: INFO: Changing modify acls groups to:
2023-09-22 17:09:55.084 SecurityManager: INFO: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); groups with view permissions: Set(); users with modify permissions: Set(root); groups with modify permissions: Set()
2023-09-22 17:09:55.493 Utils: INFO: Successfully started service 'sparkDriver' on port 42559.
2023-09-22 17:09:55.598 SparkEnv: INFO: Registering MapOutputTracker
2023-09-22 17:09:55.671 SparkEnv: INFO: Registering BlockManagerMaster
2023-09-22 17:09:55.691 BlockManagerMasterEndpoint: INFO: Using org.apache.spark.storage.DefaultTopologyMapper for getting topology information
2023-09-22 17:09:55.692 BlockManagerMasterEndpoint: INFO: BlockManagerMasterEndpoint up
2023-09-22 17:09:55.736 SparkEnv: INFO: Registering BlockManagerMasterHeartbeat
2023-09-22 17:09:55.791 DiskBlockManager: INFO: Created local directory at /hadoop/spark/tmp/blockmgr-061b1186-6c32-4d6f-a1ea-c6176857ffb4
2023-09-22 17:09:55.824 MemoryStore: INFO: MemoryStore started with capacity 24.4 GiB
2023-09-22 17:09:55.882 SparkEnv: INFO: Registering OutputCommitCoordinator
2023-09-22 17:09:55.953 log: INFO: Logging initialized @4827ms to org.sparkproject.jetty.util.log.Slf4jLog
2023-09-22 17:09:56.099 Server: INFO: jetty-9.4.43.v20210629; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 11.0.17+8
2023-09-22 17:09:56.126 Server: INFO: Started @5001ms
2023-09-22 17:09:56.168 AbstractConnector: INFO: Started ServerConnector@4c6e3b0d{HTTP/1.1, (http/1.1)}{0.0.0.0:43055}
2023-09-22 17:09:56.169 Utils: INFO: Successfully started service 'SparkUI' on port 43055.
2023-09-22 17:09:56.202 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@beecb72{/,null,AVAILABLE,@Spark}
2023-09-22 17:09:56.226 SparkContext: INFO: Added JAR file:/opt/conda/miniconda3/lib/python3.10/site-packages/hail/backend/hail-all-spark.jar at spark://notebook-slowdown-repro-m.c.broad-ctsa.internal:42559/jars/hail-all-spark.jar with timestamp 1695402594764
2023-09-22 17:09:56.227 SparkContext: INFO: Added JAR file:/opt/conda/miniconda3/lib/python3.10/site-packages/sparkmonitor/listener.jar at spark://notebook-slowdown-repro-m.c.broad-ctsa.internal:42559/jars/listener.jar with timestamp 1695402594764
2023-09-22 17:09:56.331 FairSchedulableBuilder: INFO: Creating Fair Scheduler pools from default file: fairscheduler.xml
2023-09-22 17:09:56.419 FairSchedulableBuilder: INFO: Created pool: default, schedulingMode: FAIR, minShare: 0, weight: 1
2023-09-22 17:09:56.476 Utils: INFO: Using initial executors = 2, max of spark.dynamicAllocation.initialExecutors, spark.dynamicAllocation.minExecutors and spark.executor.instances
2023-09-22 17:09:56.946 DefaultNoHARMFailoverProxyProvider: INFO: Connecting to ResourceManager at notebook-slowdown-repro-m.c.broad-ctsa.internal./10.240.0.4:8032
2023-09-22 17:09:57.238 AHSProxy: INFO: Connecting to Application History server at notebook-slowdown-repro-m.c.broad-ctsa.internal./10.240.0.4:10200
2023-09-22 17:09:58.086 ResourceUtils: INFO: Unable to find 'resource-types.xml'.
2023-09-22 17:09:58.101 Client: INFO: Verifying our application has not requested more than the maximum memory capability of the cluster (14592 MB per container)
2023-09-22 17:09:58.102 Client: INFO: Will allocate AM container, with 1024 MB memory including 384 MB overhead
2023-09-22 17:09:58.103 Client: INFO: Setting up container launch context for our AM
2023-09-22 17:09:58.106 Client: INFO: Setting up the launch environment for our AM container
2023-09-22 17:09:58.113 Client: INFO: Preparing resources for our AM container
2023-09-22 17:09:58.168 Client: INFO: Uploading resource file:/opt/conda/miniconda3/lib/python3.10/site-packages/hail/backend/hail-all-spark.jar -> hdfs://notebook-slowdown-repro-m/user/root/.sparkStaging/application_1695402030462_0001/hail-all-spark.jar
2023-09-22 17:09:59.570 Client: INFO: Uploading resource file:/opt/conda/miniconda3/lib/python3.10/site-packages/sparkmonitor/listener.jar -> hdfs://notebook-slowdown-repro-m/user/root/.sparkStaging/application_1695402030462_0001/listener.jar
2023-09-22 17:09:59.601 Client: INFO: Uploading resource file:/usr/lib/spark/python/lib/pyspark.zip -> hdfs://notebook-slowdown-repro-m/user/root/.sparkStaging/application_1695402030462_0001/pyspark.zip
2023-09-22 17:09:59.644 Client: INFO: Uploading resource file:/usr/lib/spark/python/lib/py4j-0.10.9.5-src.zip -> hdfs://notebook-slowdown-repro-m/user/root/.sparkStaging/application_1695402030462_0001/py4j-0.10.9.5-src.zip
2023-09-22 17:09:59.872 Client: INFO: Uploading resource file:/hadoop/spark/tmp/spark-7a2aa5f3-c3cf-42ae-b58e-b67bd1c5c487/__spark_conf__1662560229723861471.zip -> hdfs://notebook-slowdown-repro-m/user/root/.sparkStaging/application_1695402030462_0001/__spark_conf__.zip
2023-09-22 17:09:59.937 SecurityManager: INFO: Changing view acls to: root
2023-09-22 17:09:59.937 SecurityManager: INFO: Changing modify acls to: root
2023-09-22 17:09:59.937 SecurityManager: INFO: Changing view acls groups to:
2023-09-22 17:09:59.937 SecurityManager: INFO: Changing modify acls groups to:
2023-09-22 17:09:59.938 SecurityManager: INFO: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); groups with view permissions: Set(); users with modify permissions: Set(root); groups with modify permissions: Set()
2023-09-22 17:09:59.962 Client: INFO: Submitting application application_1695402030462_0001 to ResourceManager
2023-09-22 17:10:00.328 YarnClientImpl: INFO: Submitted application application_1695402030462_0001
2023-09-22 17:10:01.334 Client: INFO: Application report for application_1695402030462_0001 (state: ACCEPTED)
2023-09-22 17:10:01.337 Client: INFO:
client token: N/A
diagnostics: AM container is launched, waiting for AM container to Register with RM
ApplicationMaster host: N/A
ApplicationMaster RPC port: -1
queue: default
start time: 1695402600027
final status: UNDEFINED
tracking URL: http://notebook-slowdown-repro-m.c.broad-ctsa.internal.:8088/proxy/application_1695402030462_0001/
user: root
2023-09-22 17:10:01.345 SecurityManager: INFO: Changing view acls to: root
2023-09-22 17:10:01.345 SecurityManager: INFO: Changing modify acls to: root
2023-09-22 17:10:01.345 SecurityManager: INFO: Changing view acls groups to:
2023-09-22 17:10:01.345 SecurityManager: INFO: Changing modify acls groups to:
2023-09-22 17:10:01.345 SecurityManager: INFO: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); groups with view permissions: Set(); users with modify permissions: Set(root); groups with modify permissions: Set()
2023-09-22 17:10:01.392 DefaultNoHARMFailoverProxyProvider: INFO: Connecting to ResourceManager at notebook-slowdown-repro-m.c.broad-ctsa.internal./10.240.0.4:8030
2023-09-22 17:10:01.420 YarnRMClient: INFO: Registering the ApplicationMaster
2023-09-22 17:10:01.547 YarnClientSchedulerBackend: INFO: Add WebUI Filter. org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter, Map(PROXY_HOSTS -> notebook-slowdown-repro-m.c.broad-ctsa.internal., PROXY_URI_BASES -> http://notebook-slowdown-repro-m.c.broad-ctsa.internal.:8088/proxy/application_1695402030462_0001), /proxy/application_1695402030462_0001
2023-09-22 17:10:01.563 ApplicationMaster: INFO: Preparing Local resources
2023-09-22 17:10:01.642 ApplicationMaster: INFO:
===============================================================================
Default YARN executor launch context:
env:
SPARK_MONITOR_UI -> http://localhost:8088/proxy/%APP_ID%
SPARK_WORKER_WEBUI_PORT -> 18081
SPARK_ENV_LOADED -> 1
CLASSPATH -> ./hail-all-spark.jar<CPS>{{PWD}}<CPS>{{PWD}}/__spark_conf__<CPS>{{PWD}}/__spark_libs__/*<CPS>/usr/lib/spark/jars/*<CPS>:/etc/hive/conf:/usr/local/share/google/dataproc/lib/*:/usr/share/java/mysql.jar<CPS>{{PWD}}/__spark_conf__/__hadoop_conf__
SPARK_LOG_DIR -> /var/log/spark
SPARK_LOCAL_DIRS -> /hadoop/spark/tmp
SPARK_DIST_CLASSPATH -> :/etc/hive/conf:/usr/local/share/google/dataproc/lib/*:/usr/share/java/mysql.jar
SPARK_USER -> root
SPARK_SUBMIT_OPTS -> -Dscala.usejavacp=true
SPARKMONITOR_KERNEL_PORT -> 55989
SPARK_CONF_DIR -> /usr/lib/spark//conf
HAIL_WORKER_OFF_HEAP_MEMORY_PER_CORE_MB -> 3648
PYTHONHASHSEED -> 0
SPARK_HOME -> /usr/lib/spark/
PYTHONPATH -> /usr/lib/spark/python/lib/pyspark.zip:/usr/lib/spark/python/lib/py4j-0.10.9.5-src.zip<CPS>{{PWD}}/pyspark.zip<CPS>{{PWD}}/py4j-0.10.9.5-src.zip
SPARK_MASTER_PORT -> 7077
OPENBLAS_NUM_THREADS -> 1
SPARK_WORKER_DIR -> /hadoop/spark/work
SPARK_WORKER_PORT -> 7078
SPARK_DAEMON_MEMORY -> 4000m
SPARK_MASTER_WEBUI_PORT -> 18080
SPARK_LIBRARY_PATH -> :/usr/lib/hadoop/lib/native
SPARK_SCALA_VERSION -> 2.12
command:
{{JAVA_HOME}}/bin/java \
-server \
-Xmx5837m \
'-XX:+IgnoreUnrecognizedVMOptions' \
'--add-opens=java.base/java.lang=ALL-UNNAMED' \
'--add-opens=java.base/java.lang.invoke=ALL-UNNAMED' \
'--add-opens=java.base/java.lang.reflect=ALL-UNNAMED' \
'--add-opens=java.base/java.io=ALL-UNNAMED' \
'--add-opens=java.base/java.net=ALL-UNNAMED' \
'--add-opens=java.base/java.nio=ALL-UNNAMED' \
'--add-opens=java.base/java.util=ALL-UNNAMED' \
'--add-opens=java.base/java.util.concurrent=ALL-UNNAMED' \
'--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED' \
'--add-opens=java.base/sun.nio.ch=ALL-UNNAMED' \
'--add-opens=java.base/sun.nio.cs=ALL-UNNAMED' \
'--add-opens=java.base/sun.security.action=ALL-UNNAMED' \
'--add-opens=java.base/sun.util.calendar=ALL-UNNAMED' \
'--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED' \
'-Xss4M' \
-Djava.io.tmpdir={{PWD}}/tmp \
'-Dspark.driver.port=42559' \
'-Dspark.ui.port=0' \
'-Dspark.rpc.message.maxSize=512' \
-Dspark.yarn.app.container.log.dir=<LOG_DIR> \
-XX:OnOutOfMemoryError='kill %p' \
org.apache.spark.executor.YarnCoarseGrainedExecutorBackend \
--driver-url \
spark://CoarseGrainedScheduler@notebook-slowdown-repro-m.c.broad-ctsa.internal:42559 \
--executor-id \
<executorId> \
--hostname \
<hostname> \
--cores \
4 \
--app-id \
application_1695402030462_0001 \
--resourceProfileId \
0 \
1><LOG_DIR>/stdout \
2><LOG_DIR>/stderr
resources:
__spark_conf__ -> resource { scheme: "hdfs" host: "notebook-slowdown-repro-m" port: -1 file: "/user/root/.sparkStaging/application_1695402030462_0001/__spark_conf__.zip" } size: 290520 timestamp: 1695402599910 type: ARCHIVE visibility: PRIVATE
listener.jar -> resource { scheme: "hdfs" host: "notebook-slowdown-repro-m" port: -1 file: "/user/root/.sparkStaging/application_1695402030462_0001/listener.jar" } size: 37657 timestamp: 1695402599592 type: FILE visibility: PRIVATE
pyspark.zip -> resource { scheme: "hdfs" host: "notebook-slowdown-repro-m" port: -1 file: "/user/root/.sparkStaging/application_1695402030462_0001/pyspark.zip" } size: 1529089 timestamp: 1695402599635 type: FILE visibility: PRIVATE
py4j-0.10.9.5-src.zip -> resource { scheme: "hdfs" host: "notebook-slowdown-repro-m" port: -1 file: "/user/root/.sparkStaging/application_1695402030462_0001/py4j-0.10.9.5-src.zip" } size: 42404 timestamp: 1695402599663 type: FILE visibility: PRIVATE
hail-all-spark.jar -> resource { scheme: "hdfs" host: "notebook-slowdown-repro-m" port: -1 file: "/user/root/.sparkStaging/application_1695402030462_0001/hail-all-spark.jar" } size: 186721849 timestamp: 1695402599526 type: FILE visibility: PRIVATE
===============================================================================
2023-09-22 17:10:01.679 Utils: INFO: Using initial executors = 2, max of spark.dynamicAllocation.initialExecutors, spark.dynamicAllocation.minExecutors and spark.executor.instances
2023-09-22 17:10:01.680 YarnAllocator: INFO: Resource profile 0 doesn't exist, adding it
2023-09-22 17:10:01.689 YarnSchedulerBackend$YarnSchedulerEndpoint: INFO: ApplicationMaster registered as NettyRpcEndpointRef(spark://YarnAM@notebook-slowdown-repro-m.c.broad-ctsa.internal:42559)
2023-09-22 17:10:01.699 YarnAllocator: INFO: Will request 2 executor container(s) for ResourceProfile Id: 0, each with 4 core(s) and 14592 MB memory. with custom resources: <memory:14592, vCores:4>
2023-09-22 17:10:01.705 YarnContainerInfoHelper: INFO: Error while building executor logs - executor logs will not be available
java.lang.NullPointerException: null
at org.apache.hadoop.yarn.api.records.ContainerId.fromString(ContainerId.java:190) ~[hadoop-client-api-3.3.3.jar:?]
at org.apache.hadoop.yarn.util.ConverterUtils.toContainerId(ConverterUtils.java:140) ~[hadoop-client-api-3.3.3.jar:?]
at org.apache.spark.deploy.yarn.YarnSparkHadoopUtil$.getContainerId(YarnSparkHadoopUtil.scala:252) ~[spark-yarn_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.util.YarnContainerInfoHelper$.getContainerId(YarnContainerInfoHelper.scala:90) ~[spark-yarn_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.util.YarnContainerInfoHelper$.getLogUrls(YarnContainerInfoHelper.scala:47) ~[spark-yarn_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.deploy.yarn.ApplicationMaster.org$apache$spark$deploy$yarn$ApplicationMaster$$extractLogUrls(ApplicationMaster.scala:71) ~[spark-yarn_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.deploy.yarn.ApplicationMaster$AMEndpoint.onStart(ApplicationMaster.scala:796) ~[spark-yarn_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.rpc.netty.Inbox.$anonfun$process$1(Inbox.scala:120) ~[spark-core_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.rpc.netty.Inbox.safelyCall(Inbox.scala:213) ~[spark-core_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.rpc.netty.Inbox.process(Inbox.scala:100) ~[spark-core_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.rpc.netty.MessageLoop.org$apache$spark$rpc$netty$MessageLoop$$receiveLoop(MessageLoop.scala:75) ~[spark-core_2.12-3.3.0.jar:3.3.0]
at org.apache.spark.rpc.netty.MessageLoop$$anon$1.run(MessageLoop.scala:41) ~[spark-core_2.12-3.3.0.jar:3.3.0]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:829) ~[?:?]
2023-09-22 17:10:01.719 YarnAllocator: INFO: Submitted 2 unlocalized container requests.
2023-09-22 17:10:02.036 StatsdSink: INFO: StatsdSink started with prefix: 'spark.applicationMaster'
2023-09-22 17:10:02.037 ApplicationMaster: INFO: Started progress reporter thread with (heartbeat : 3000, initial allocation : 200) intervals
2023-09-22 17:10:02.099 YarnAllocator: INFO: Launching container container_1695402030462_0001_01_000001 on host notebook-slowdown-repro-w-1.c.broad-ctsa.internal for executor with ID 1 for ResourceProfile Id 0
2023-09-22 17:10:02.102 YarnAllocator: INFO: Received 1 containers from YARN, launching executors on 1 of them.
2023-09-22 17:10:02.116 ExecutorRunnable: INFO: Initializing service data for shuffle service using name 'spark_shuffle'
2023-09-22 17:10:02.373 Client: INFO: Application report for application_1695402030462_0001 (state: RUNNING)
2023-09-22 17:10:02.374 Client: INFO:
client token: N/A
diagnostics: N/A
ApplicationMaster host: 10.240.0.4
ApplicationMaster RPC port: -1
queue: default
start time: 1695402600027
final status: UNDEFINED
tracking URL: http://notebook-slowdown-repro-m.c.broad-ctsa.internal.:8088/proxy/application_1695402030462_0001/
user: root
2023-09-22 17:10:02.377 YarnClientSchedulerBackend: INFO: Application application_1695402030462_0001 has started running.
2023-09-22 17:10:02.379 YarnScheduler: INFO: Starting speculative execution thread
2023-09-22 17:10:02.390 Utils: INFO: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 38207.
2023-09-22 17:10:02.390 NettyBlockTransferService: INFO: Server created on notebook-slowdown-repro-m.c.broad-ctsa.internal:38207
2023-09-22 17:10:02.392 BlockManager: INFO: Using org.apache.spark.storage.RandomBlockReplicationPolicy for block replication policy
2023-09-22 17:10:02.408 BlockManagerMaster: INFO: Registering BlockManager BlockManagerId(driver, notebook-slowdown-repro-m.c.broad-ctsa.internal, 38207, None)
2023-09-22 17:10:02.412 BlockManagerMasterEndpoint: INFO: Registering block manager notebook-slowdown-repro-m.c.broad-ctsa.internal:38207 with 24.4 GiB RAM, BlockManagerId(driver, notebook-slowdown-repro-m.c.broad-ctsa.internal, 38207, None)
2023-09-22 17:10:02.416 BlockManagerMaster: INFO: Registered BlockManager BlockManagerId(driver, notebook-slowdown-repro-m.c.broad-ctsa.internal, 38207, None)
2023-09-22 17:10:02.417 BlockManager: INFO: external shuffle service port = 7337
2023-09-22 17:10:02.418 BlockManager: INFO: Initialized BlockManager: BlockManagerId(driver, notebook-slowdown-repro-m.c.broad-ctsa.internal, 38207, None)
2023-09-22 17:10:02.435 StatsdSink: INFO: StatsdSink started with prefix: 'spark.driver'
2023-09-22 17:10:02.727 YarnAllocator: INFO: Launching container container_1695402030462_0001_01_000002 on host notebook-slowdown-repro-w-0.c.broad-ctsa.internal for executor with ID 2 for ResourceProfile Id 0
2023-09-22 17:10:02.727 YarnAllocator: INFO: Received 1 containers from YARN, launching executors on 1 of them.
2023-09-22 17:10:02.733 ExecutorRunnable: INFO: Initializing service data for shuffle service using name 'spark_shuffle'
2023-09-22 17:10:03.574 GoogleCloudStorageImpl: INFO: Ignoring exception of type GoogleJsonResponseException; verified object already exists with desired state.
2023-09-22 17:10:03.688 SingleEventLogFileWriter: INFO: Logging events to gs://dataproc-temp-us-central1-842871226259-nmtwlbu8/715f1e4f-db9f-4756-81fd-3031c77879b3/spark-job-history/application_1695402030462_0001.inprogress
2023-09-22 17:10:03.979 Utils: INFO: Using initial executors = 2, max of spark.dynamicAllocation.initialExecutors, spark.dynamicAllocation.minExecutors and spark.executor.instances
2023-09-22 17:10:03.996 YarnAllocator: INFO: Resource profile 0 doesn't exist, adding it
2023-09-22 17:10:04.016 SparkContext: INFO: Registered listener sparkmonitor.listener.JupyterSparkMonitorListener
2023-09-22 17:10:04.039 ContextHandler: INFO: Stopped o.s.j.s.ServletContextHandler@beecb72{/,null,STOPPED,@Spark}
2023-09-22 17:10:04.042 ServerInfo: INFO: Adding filter to /jobs: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.049 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@7c1d0a93{/jobs,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.050 ServerInfo: INFO: Adding filter to /jobs/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.052 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@50072d14{/jobs/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.053 ServerInfo: INFO: Adding filter to /jobs/job: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.055 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@15da6457{/jobs/job,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.056 ServerInfo: INFO: Adding filter to /jobs/job/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.063 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@db19a{/jobs/job/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.063 ServerInfo: INFO: Adding filter to /stages: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.065 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@48d9f57a{/stages,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.065 ServerInfo: INFO: Adding filter to /stages/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.067 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@7e89235d{/stages/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.067 ServerInfo: INFO: Adding filter to /stages/stage: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.071 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@918d196{/stages/stage,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.071 ServerInfo: INFO: Adding filter to /stages/stage/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.073 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@41ff64f6{/stages/stage/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.075 ServerInfo: INFO: Adding filter to /stages/pool: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.076 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@738a13f2{/stages/pool,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.077 ServerInfo: INFO: Adding filter to /stages/pool/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.079 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@2661934d{/stages/pool/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.080 ServerInfo: INFO: Adding filter to /storage: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.081 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@aeaf561{/storage,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.082 ServerInfo: INFO: Adding filter to /storage/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.083 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@29a6c2f9{/storage/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.083 ServerInfo: INFO: Adding filter to /storage/rdd: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.084 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@672717a6{/storage/rdd,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.085 ServerInfo: INFO: Adding filter to /storage/rdd/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.086 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@6ba041d{/storage/rdd/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.086 ServerInfo: INFO: Adding filter to /environment: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.087 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@464209cb{/environment,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.087 ServerInfo: INFO: Adding filter to /environment/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.088 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@6cb63859{/environment/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.089 ServerInfo: INFO: Adding filter to /executors: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.090 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@14e65e8a{/executors,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.090 ServerInfo: INFO: Adding filter to /executors/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.091 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@38e68ac8{/executors/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.092 ServerInfo: INFO: Adding filter to /executors/threadDump: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.094 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@78fe5a0c{/executors/threadDump,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.094 ServerInfo: INFO: Adding filter to /executors/threadDump/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.096 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@2e6f589f{/executors/threadDump/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.096 ServerInfo: INFO: Adding filter to /static: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.139 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@3c3fa609{/static,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.139 ServerInfo: INFO: Adding filter to /: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.141 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@664e15a4{/,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.142 ServerInfo: INFO: Adding filter to /api: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.144 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@33bc35be{/api,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.144 ServerInfo: INFO: Adding filter to /jobs/job/kill: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.154 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@172b289e{/jobs/job/kill,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.154 ServerInfo: INFO: Adding filter to /stages/stage/kill: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.156 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@424737be{/stages/stage/kill,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.162 ServerInfo: INFO: Adding filter to /metrics/json: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter
2023-09-22 17:10:04.164 ContextHandler: INFO: Started o.s.j.s.ServletContextHandler@28ad0484{/metrics/json,null,AVAILABLE,@Spark}
2023-09-22 17:10:04.165 YarnClientSchedulerBackend: INFO: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.0
2023-09-22 17:10:04.178 Hail: INFO: SparkUI: http://notebook-slowdown-repro-m.c.broad-ctsa.internal:43055
2023-09-22 17:10:04.571 Hail: INFO: Running Hail version 0.2.124-ee7fef6fc40d
2023-09-22 17:10:05.231 SparkContext: WARN: Using an existing SparkContext; some configuration may not take effect.
2023-09-22 17:10:07.740 : INFO: RegionPool: initialized for thread 17: Thread-3
2023-09-22 17:10:08.334 : INFO: RegionPool: initialized for thread 17: Thread-3
2023-09-22 17:10:08.336 : INFO: TaskReport: stage=0, partition=0, attempt=0, peakBytes=0, peakBytesReadable=0.00 B, chunks requested=0, cache hits=0
2023-09-22 17:10:08.337 : INFO: RegionPool: FREE: 0 allocated (0 blocks / 0 chunks), regions.size = 0, 0 current java objects, thread 17: Thread-3
2023-09-22 17:10:08.338 : INFO: RegionPool: FREE: 64.0K allocated (64.0K blocks / 0 chunks), regions.size = 1, 0 current java objects, thread 17: Thread-3
2023-09-22 17:10:08.339 : INFO: timing SparkBackend.parse_value_ir total 605.670ms self 605.670ms children 0.000ms %children 0.00%
2023-09-22 17:10:08.340 : INFO: RegionPool: initialized for thread 17: Thread-3
2023-09-22 17:10:08.350 : INFO: starting execution of query hail_query_1 of initial size 22
2023-09-22 17:10:08.456 : WARN: Failed to compute SemanticHash: SemanticHash unknown: is.hail.expr.ir.TableHead
2023-09-22 17:10:08.457 : INFO: IR Semantic Hash: None
2023-09-22 17:10:08.653 : INFO: initial IR: IR size 22:
%1 = RNGStateLiteral
!ht = TableRange [10, 2]
!ht2 = TableOrderBy(!ht) [(Aidx)]
!ht3 = TableMapRows(!ht2) { (%g, %row) =>
!2 = SelectFields(%row) [(idx)]
!3 = SelectFields(!2) [()]
!4 = GetField(%row) [idx]
InsertFields !3 (idx: !4)
}
!ht4 = TableMapRows(!ht3) { (%g2, %row2) =>
!5 = SelectFields(%row2) [(idx)]
!6 = SelectFields(!5) [()]
!7 = GetField(%row2) [idx]
!8 = ApplySpecial(!7) [1, showStr, (), String]
InsertFields !6 (idx: !8)
}
!ht5 = TableHead(!ht4) [11]
!9 = TableCollect(!ht5)
GetField(!9) [rows]
2023-09-22 17:10:08.811 : INFO: after optimize: relationalLowerer, initial IR: IR size 12:
!ht = TableRange [10, 2]
!ht2 = TableOrderBy(!ht) [(Aidx)]
!ht3 = TableHead(!ht2) [11]
!ht4 = TableMapRows(!ht3) { (%g, %row) =>
!1 = SelectFields(%row) [()]
!2 = GetField(%row) [idx]
!3 = ApplySpecial(!2) [1, showStr, (), String]
InsertFields !1 (idx: !3)
}
!4 = TableCollect(!ht4)
GetField(!4) [rows]
2023-09-22 17:10:08.828 : INFO: after LowerMatrixToTable: IR size 12:
!ht = TableRange [10, 2]
!ht2 = TableOrderBy(!ht) [(Aidx)]
!ht3 = TableHead(!ht2) [11]
!ht4 = TableMapRows(!ht3) { (%g, %row) =>
!1 = SelectFields(%row) [()]
!2 = GetField(%row) [idx]
!3 = ApplySpecial(!2) [1, showStr, (), String]
InsertFields !1 (idx: !3)
}
!4 = TableCollect(!ht4)
GetField(!4) [rows]
2023-09-22 17:10:08.839 : INFO: after optimize: relationalLowerer, after LowerMatrixToTable: IR size 12:
!ht = TableRange [10, 2]
!ht2 = TableOrderBy(!ht) [(Aidx)]
!ht3 = TableHead(!ht2) [11]
!ht4 = TableMapRows(!ht3) { (%g, %row) =>
!1 = SelectFields(%row) [()]
!2 = GetField(%row) [idx]
!3 = ApplySpecial(!2) [1, showStr, (), String]
InsertFields !1 (idx: !3)
}
!4 = TableCollect(!ht4)
GetField(!4) [rows]
2023-09-22 17:10:08.845 : INFO: after LiftRelationalValuesToRelationalLets: IR size 14:
!ht = TableRange [10, 2]
!ht2 = TableOrderBy(!ht) [(Aidx)]
!ht3 = TableHead(!ht2) [11]
!ht4 = TableMapRows(!ht3) { (%g, %row) =>
!1 = SelectFields(%row) [()]
!2 = GetField(%row) [idx]
!3 = ApplySpecial(!2) [1, showStr, (), String]
InsertFields !1 (idx: !3)
}
%4 = TableCollect(!ht4)
GetField(%4) [rows]
2023-09-22 17:10:08.849 : INFO: initial IR: IR size 11:
!ht = TableRange [10, 2]
!ht2 = TableOrderBy(!ht) [(Aidx)]
!ht3 = TableHead(!ht2) [11]
!ht4 = TableMapRows(!ht3) { (%g, %row) =>
!1 = SelectFields(%row) [()]
!2 = GetField(%row) [idx]
!3 = ApplySpecial(!2) [1, showStr, (), String]
InsertFields !1 (idx: !3)
}
TableCollect(!ht4)
2023-09-22 17:10:08.853 : INFO: after LowerAndExecuteShuffles: IR size 11:
!ht = TableRange [10, 2]
!ht2 = TableOrderBy(!ht) [(Aidx)]
!ht3 = TableHead(!ht2) [11]
!ht4 = TableMapRows(!ht3) { (%g, %row) =>
!1 = SelectFields(%row) [()]
!2 = GetField(%row) [idx]
!3 = ApplySpecial(!2) [1, showStr, (), String]
InsertFields !1 (idx: !3)
}
TableCollect(!ht4)
2023-09-22 17:10:08.862 : INFO: after optimize: relationalLowerer, after LowerAndExecuteShuffles: IR size 11:
!ht = TableRange [10, 2]
!ht2 = TableOrderBy(!ht) [(Aidx)]
!ht3 = TableHead(!ht2) [11]
!ht4 = TableMapRows(!ht3) { (%g, %row) =>
!1 = SelectFields(%row) [()]
!2 = GetField(%row) [idx]
!3 = ApplySpecial(!2) [1, showStr, (), String]
InsertFields !1 (idx: !3)
}
TableCollect(!ht4)
2023-09-22 17:10:08.870 : INFO: LowerOrInterpretNonCompilable: whole stage code generation is a go!
2023-09-22 17:10:08.871 : INFO: lowering result: TableCollect
2023-09-22 17:10:09.102 : INFO: initial IR: IR size 148:
%1 = MakeStruct()
!2 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!2) [False]
%3 = ToArray(!s)
!c4 = I32 [4]
!c0 = I32 [0]
%30 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
%4 = MakeStruct()
!s2 = ToStream(%3) [False]
!s3 = StreamTake(!s2, %loopvar)
!5 = MakeStruct(__iruid_3: %4)
!6 = Str ["iteration="]
!7 = Apply(%loopvar2) [-1, str, (), String]
!8 = Apply(!6, !7) [-1, concat, (), String]
!9 = Str [",nParts="]
!10 = Apply(!8, !9) [-1, concat, (), String]
!11 = Apply(%loopvar) [-1, str, (), String]
!12 = Apply(!10, !11) [-1, concat, (), String]
%18 = CollectDistributedArray(!s3, !5, !12) {
(%ctx, %g) =>
%13 = GetField(%g) [__iruid_3]
%14 = Ref [__iruid_10]
%15 = Ref [__iruid_11]
!16 = GetField(%15) [start]
!17 = GetField(%15) [end]
!c1 = I32 [1]
!s4 = StreamRange(!16, !17, !c1) [-1, True]
!s5 = StreamMap(!s4) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s6 = StreamTake(!s5, !c11)
StreamLen(!s6)
}
%19 = Ref [__iruid_13]
!s7 = ToStream(%19) [False]
!c0_2 = I32 [0]
!20 = StreamFold(!s7, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!21 = Cast(!20) [Int64]
!22 = I64 [11]
!23 = ApplyComparisonOp(!21, !22) [GTEQ]
!24 = ArrayLen(%3)
!25 = ArrayLen(%19)
!26 = ApplyComparisonOp(!24, !25) [LTEQ]
!27 = ApplySpecial(!23, !26) [-1, lor,
(), Boolean]
If !27 then { %19 } else {
!c4_2 = I32 [4]
!28 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!29 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!28, !29) [Array[Int32]]
}
}
%31 = ArrayLen(%30)
!c0_3 = I32 [0]
!32 = ApplyComparisonOp(%31, !c0_3) [EQWithNA]
%48 = If !32 then {
!c0_4 = I32 [0]
!33 = I64 [0]
MakeTuple(!c0_4, !33) [(0 1)]
} else {
!c0_5 = I32 [0]
!34 = I64 [11]
TailLoop(!c0_5, !34) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!35 = ApplyBinaryPrimOp(%31, !c1_3) [Subtract]
!36 = ApplyComparisonOp(%loopvar3, !35) [EQWithNA]
!37 = ArrayRef(%30, %loopvar3) [-1]
!38 = Cast(!37) [Int64]
!39 = ApplyBinaryPrimOp(%loopvar4, !38) [Subtract]
!40 = I64 [0]
!41 = ApplyComparisonOp(!39, !40) [LTEQ]
!42 = ApplySpecial(!36, !41) [-1, lor,
(), Boolean]
If !42 then {
!c1_4 = I32 [1]
!43 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!43, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!44 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!45 = ArrayRef(%30, %loopvar3) [-1]
!46 = Cast(!45) [Int64]
!47 = ApplyBinaryPrimOp(%loopvar4, !46) [Subtract]
Recur(!44, !47) [Tuple[Int32,Int64]]
}
}
}
!s8 = ToStream(%3) [False]
!49 = GetTupleElement(%48) [0]
!s9 = StreamTake(!s8, !49)
!c0_6 = I32 [0]
!50 = GetTupleElement(%48) [0]
!c1_6 = I32 [1]
!s10 = StreamRange(!c0_6, !50, !c1_6) [-1, False]
!s11 = StreamMap(!s10) { (%elt3) =>
!51 = GetTupleElement(%48) [0]
!c1_7 = I32 [1]
!52 = ApplyBinaryPrimOp(!51, !c1_7) [Subtract]
!53 = ApplyComparisonOp(%elt3, !52) [EQWithNA]
If !53 then {
!54 = GetTupleElement(%48) [1]
Cast(!54) [Int32]
} else {
ArrayRef(%30, %elt3) [-1]
}
}
!s12 = StreamZip(!s9, !s11) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s12)
2023-09-22 17:10:09.201 : INFO: Prune: MakeStruct: eliminating field '__iruid_3'
2023-09-22 17:10:09.332 : INFO: after optimize: relationalLowerer, initial IR: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.364 : INFO: after LowerMatrixToTable: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.492 : INFO: after optimize: relationalLowerer, after LowerMatrixToTable: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.506 : INFO: after LiftRelationalValuesToRelationalLets: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.522 : INFO: after EvalRelationalLets: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.532 : INFO: after LowerAndExecuteShuffles: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.625 : INFO: after optimize: relationalLowerer, after LowerAndExecuteShuffles: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.637 : INFO: after LowerOrInterpretNonCompilable: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.698 : INFO: after optimize: relationalLowerer, after LowerOrInterpretNonCompilable: IR size 127:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
ToArray(!s11)
2023-09-22 17:10:09.718 : INFO: initial IR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:09.788 : INFO: after optimize: compileLowerer, initial IR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:09.795 : INFO: after InlineApplyIR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:09.832 : INFO: after optimize: compileLowerer, after InlineApplyIR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:09.861 : INFO: after LowerArrayAggsToRunAggs: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:09.899 : INFO: after optimize: compileLowerer, after LowerArrayAggsToRunAggs: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:10.348 : INFO: instruction count: 3: __C22HailClassLoaderContainer.<init>
2023-09-22 17:10:10.348 : INFO: instruction count: 3: __C22HailClassLoaderContainer.<clinit>
2023-09-22 17:10:10.351 : INFO: instruction count: 3: __C24FSContainer.<init>
2023-09-22 17:10:10.352 : INFO: instruction count: 3: __C24FSContainer.<clinit>
2023-09-22 17:10:10.368 : INFO: instruction count: 3: __C26collect_distributed_array_table_head_recursive_count.<init>
2023-09-22 17:10:10.369 : INFO: instruction count: 111: __C26collect_distributed_array_table_head_recursive_count.apply
2023-09-22 17:10:10.369 : INFO: instruction count: 17: __C26collect_distributed_array_table_head_recursive_count.apply
2023-09-22 17:10:10.370 : INFO: instruction count: 27: __C26collect_distributed_array_table_head_recursive_count.__m28DECODE_r_struct_of_r_struct_of_r_int32ANDr_int32ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:10.370 : INFO: instruction count: 26: __C26collect_distributed_array_table_head_recursive_count.__m29INPLACE_DECODE_r_struct_of_r_int32ANDr_int32END_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:10.370 : INFO: instruction count: 10: __C26collect_distributed_array_table_head_recursive_count.__m30INPLACE_DECODE_r_int32_TO_r_int32
2023-09-22 17:10:10.371 : INFO: instruction count: 27: __C26collect_distributed_array_table_head_recursive_count.__m32DECODE_r_struct_of_r_struct_of_ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:10.371 : INFO: instruction count: 8: __C26collect_distributed_array_table_head_recursive_count.__m33INPLACE_DECODE_r_struct_of_END_TO_r_struct_of_END
2023-09-22 17:10:10.371 YarnSchedulerBackend$YarnDriverEndpoint: INFO: Registered executor NettyRpcEndpointRef(spark-client://Executor) (10.240.0.5:57350) with ID 1, ResourceProfileId 0
2023-09-22 17:10:10.374 : INFO: instruction count: 118: __C26collect_distributed_array_table_head_recursive_count.__m35split_StreamLen
2023-09-22 17:10:10.375 : INFO: instruction count: 13: __C26collect_distributed_array_table_head_recursive_count.__m45ENCODE_SBaseStructPointer_TO_r_struct_of_r_int32END
2023-09-22 17:10:10.375 : INFO: instruction count: 4: __C26collect_distributed_array_table_head_recursive_count.__m46ENCODE_SInt32$_TO_r_int32
2023-09-22 17:10:10.375 : INFO: instruction count: 9: __C26collect_distributed_array_table_head_recursive_count.setPartitionIndex
2023-09-22 17:10:10.376 : INFO: instruction count: 4: __C26collect_distributed_array_table_head_recursive_count.addPartitionRegion
2023-09-22 17:10:10.376 : INFO: instruction count: 4: __C26collect_distributed_array_table_head_recursive_count.setPool
2023-09-22 17:10:10.376 : INFO: instruction count: 3: __C26collect_distributed_array_table_head_recursive_count.addHailClassLoader
2023-09-22 17:10:10.376 : INFO: instruction count: 3: __C26collect_distributed_array_table_head_recursive_count.addFS
2023-09-22 17:10:10.377 : INFO: instruction count: 4: __C26collect_distributed_array_table_head_recursive_count.addTaskContext
2023-09-22 17:10:10.377 ExecutorMonitor: INFO: New executor 1 has registered (new total is 1)
2023-09-22 17:10:10.463 BlockManagerMasterEndpoint: INFO: Registering block manager notebook-slowdown-repro-w-1.c.broad-ctsa.internal:45469 with 3.2 GiB RAM, BlockManagerId(1, notebook-slowdown-repro-w-1.c.broad-ctsa.internal, 45469, None)
2023-09-22 17:10:10.593 : INFO: encoder cache miss (0 hits, 1 misses, 0.000)
2023-09-22 17:10:10.608 : INFO: instruction count: 3: __C134HailClassLoaderContainer.<init>
2023-09-22 17:10:10.608 : INFO: instruction count: 3: __C134HailClassLoaderContainer.<clinit>
2023-09-22 17:10:10.609 : INFO: instruction count: 3: __C136FSContainer.<init>
2023-09-22 17:10:10.609 : INFO: instruction count: 3: __C136FSContainer.<clinit>
2023-09-22 17:10:10.614 : INFO: instruction count: 3: __C138etypeEncode.<init>
2023-09-22 17:10:10.614 : INFO: instruction count: 7: __C138etypeEncode.apply
2023-09-22 17:10:10.615 : INFO: instruction count: 65: __C138etypeEncode.__m140ENCODE_SBaseStructPointer_TO_r_struct_of_r_binaryANDr_binaryANDr_struct_of_ENDANDr_struct_of_r_int32ANDr_int64ENDANDr_array_of_r_struct_of_r_int32ANDr_int32ENDEND
2023-09-22 17:10:10.615 : INFO: instruction count: 16: __C138etypeEncode.__m141ENCODE_SStringPointer_TO_r_binary
2023-09-22 17:10:10.615 : INFO: instruction count: 1: __C138etypeEncode.__m142ENCODE_SBaseStructPointer_TO_r_struct_of_END
2023-09-22 17:10:10.616 : INFO: instruction count: 25: __C138etypeEncode.__m143ENCODE_SBaseStructPointer_TO_r_struct_of_r_int32ANDr_int64END
2023-09-22 17:10:10.616 : INFO: instruction count: 4: __C138etypeEncode.__m144ENCODE_SInt32$_TO_r_int32
2023-09-22 17:10:10.616 : INFO: instruction count: 4: __C138etypeEncode.__m145ENCODE_SInt64$_TO_r_int64
2023-09-22 17:10:10.617 : INFO: instruction count: 35: __C138etypeEncode.__m146ENCODE_SIndexablePointer_TO_r_array_of_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:10.617 : INFO: instruction count: 25: __C138etypeEncode.__m147ENCODE_SBaseStructPointer_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:10.712 MemoryStore: INFO: Block broadcast_0 stored as values in memory (estimated size 136.0 B, free 24.4 GiB)
2023-09-22 17:10:11.162 MemoryStore: INFO: Block broadcast_0_piece0 stored as bytes in memory (estimated size 91.0 B, free 24.4 GiB)
2023-09-22 17:10:11.165 BlockManagerInfo: INFO: Added broadcast_0_piece0 in memory on notebook-slowdown-repro-m.c.broad-ctsa.internal:38207 (size: 91.0 B, free: 24.4 GiB)
2023-09-22 17:10:11.171 SparkContext: INFO: Created broadcast 0 from broadcast at SparkBackend.scala:361
2023-09-22 17:10:11.173 : INFO: instruction count: 3: __C1HailClassLoaderContainer.<init>
2023-09-22 17:10:11.173 : INFO: instruction count: 3: __C1HailClassLoaderContainer.<clinit>
2023-09-22 17:10:11.174 : INFO: instruction count: 3: __C3FSContainer.<init>
2023-09-22 17:10:11.174 : INFO: instruction count: 3: __C3FSContainer.<clinit>
2023-09-22 17:10:11.231 : INFO: instruction count: 3: __C5Compiled.<init>
2023-09-22 17:10:11.232 : INFO: instruction count: 31: __C5Compiled.apply
2023-09-22 17:10:11.235 : INFO: instruction count: 431: __C5Compiled.__m7split_ToArray
2023-09-22 17:10:11.237 : INFO: instruction count: 371: __C5Compiled.__m9split_TailLoop
2023-09-22 17:10:11.237 : INFO: instruction count: 4: __C5Compiled.setBackend
2023-09-22 17:10:11.237 : INFO: instruction count: 9: __C5Compiled.__m55ENCODE_SBaseStructPointer_TO_r_struct_of_r_struct_of_r_int32ANDr_int32ENDEND
2023-09-22 17:10:11.238 : INFO: instruction count: 25: __C5Compiled.__m56ENCODE_SBaseStructPointer_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.238 : INFO: instruction count: 4: __C5Compiled.__m57ENCODE_SInt32$_TO_r_int32
2023-09-22 17:10:11.238 : INFO: instruction count: 9: __C5Compiled.__m58ENCODE_SBaseStructPointer_TO_r_struct_of_r_struct_of_ENDEND
2023-09-22 17:10:11.238 : INFO: instruction count: 1: __C5Compiled.__m59ENCODE_SBaseStructPointer_TO_r_struct_of_END
2023-09-22 17:10:11.238 : INFO: instruction count: 18: __C5Compiled.__m60str
2023-09-22 17:10:11.239 : INFO: instruction count: 29: __C5Compiled.__m63concat
2023-09-22 17:10:11.239 : INFO: instruction count: 29: __C5Compiled.__m64concat
2023-09-22 17:10:11.239 : INFO: instruction count: 9: __C5Compiled.__m65concat
2023-09-22 17:10:11.239 : INFO: instruction count: 27: __C5Compiled.__m66DECODE_r_struct_of_r_int32END_TO_SBaseStructPointer
2023-09-22 17:10:11.240 : INFO: instruction count: 10: __C5Compiled.__m67INPLACE_DECODE_r_int32_TO_r_int32
2023-09-22 17:10:11.240 : INFO: instruction count: 70: __C5Compiled.__m71split_StreamFold
2023-09-22 17:10:11.240 : INFO: instruction count: 11: __C5Compiled.__m81ord_gteq
2023-09-22 17:10:11.241 : INFO: instruction count: 16: __C5Compiled.__m82ord_gteqNonnull
2023-09-22 17:10:11.241 : INFO: instruction count: 11: __C5Compiled.__m83ord_lteq
2023-09-22 17:10:11.241 : INFO: instruction count: 14: __C5Compiled.__m84ord_lteqNonnull
2023-09-22 17:10:11.241 : INFO: instruction count: 11: __C5Compiled.__m92ord_equiv
2023-09-22 17:10:11.241 : INFO: instruction count: 14: __C5Compiled.__m93ord_equivNonnull
2023-09-22 17:10:11.242 : INFO: instruction count: 225: __C5Compiled.__m94split_TailLoop
2023-09-22 17:10:11.243 : INFO: instruction count: 35: __C5Compiled.__m100arrayref_bounds_check
2023-09-22 17:10:11.243 : INFO: instruction count: 11: __C5Compiled.__m101ord_lteq
2023-09-22 17:10:11.243 : INFO: instruction count: 16: __C5Compiled.__m102ord_lteqNonnull
2023-09-22 17:10:11.243 : INFO: instruction count: 9: __C5Compiled.setPartitionIndex
2023-09-22 17:10:11.243 : INFO: instruction count: 4: __C5Compiled.addPartitionRegion
2023-09-22 17:10:11.244 : INFO: instruction count: 4: __C5Compiled.setPool
2023-09-22 17:10:11.244 : INFO: instruction count: 3: __C5Compiled.addHailClassLoader
2023-09-22 17:10:11.244 : INFO: instruction count: 3: __C5Compiled.addFS
2023-09-22 17:10:11.244 : INFO: instruction count: 4: __C5Compiled.addTaskContext
2023-09-22 17:10:11.244 : INFO: instruction count: 3: __C5Compiled.setObjects
2023-09-22 17:10:11.247 : INFO: instruction count: 110: __C5Compiled.addAndDecodeLiterals
2023-09-22 17:10:11.247 : INFO: instruction count: 63: __C5Compiled.__m127DECODE_r_struct_of_r_binaryANDr_binaryANDr_struct_of_ENDANDr_struct_of_r_int32ANDr_int64ENDANDr_array_of_r_struct_of_r_int32ANDr_int32ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:11.248 : INFO: instruction count: 31: __C5Compiled.__m128INPLACE_DECODE_r_binary_TO_r_string
2023-09-22 17:10:11.248 : INFO: instruction count: 8: __C5Compiled.__m129INPLACE_DECODE_r_struct_of_END_TO_r_struct_of_END
2023-09-22 17:10:11.248 : INFO: instruction count: 26: __C5Compiled.__m130INPLACE_DECODE_r_struct_of_r_int32ANDr_int64END_TO_r_tuple_of_r_int32ANDr_int64END
2023-09-22 17:10:11.248 : INFO: instruction count: 10: __C5Compiled.__m131INPLACE_DECODE_r_int64_TO_r_int64
2023-09-22 17:10:11.249 : INFO: instruction count: 58: __C5Compiled.__m132INPLACE_DECODE_r_array_of_r_struct_of_r_int32ANDr_int32END_TO_r_array_of_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.249 : INFO: instruction count: 26: __C5Compiled.__m133INPLACE_DECODE_r_struct_of_r_int32ANDr_int32END_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.250 : INFO: instruction count: 242: __C5Compiled.__m9split_TailLoop_region4_7
2023-09-22 17:10:11.250 : INFO: instruction count: 3: __C148__m9split_TailLoopSpills.<init>
2023-09-22 17:10:11.251 : INFO: instruction count: 3: __C61staticWrapperClass_1.<init>
2023-09-22 17:10:11.254 : INFO: initial IR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.286 : INFO: after optimize: compileLowerer, initial IR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.291 : INFO: after InlineApplyIR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.323 : INFO: after optimize: compileLowerer, after InlineApplyIR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.332 : INFO: after LowerArrayAggsToRunAggs: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.363 : INFO: after optimize: compileLowerer, after LowerArrayAggsToRunAggs: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.387 : INFO: instruction count: 3: __C177HailClassLoaderContainer.<init>
2023-09-22 17:10:11.387 : INFO: instruction count: 3: __C177HailClassLoaderContainer.<clinit>
2023-09-22 17:10:11.388 : INFO: instruction count: 3: __C179FSContainer.<init>
2023-09-22 17:10:11.388 : INFO: instruction count: 3: __C179FSContainer.<clinit>
2023-09-22 17:10:11.392 : INFO: instruction count: 3: __C181collect_distributed_array_table_head_recursive_count.<init>
2023-09-22 17:10:11.392 : INFO: instruction count: 111: __C181collect_distributed_array_table_head_recursive_count.apply
2023-09-22 17:10:11.392 : INFO: instruction count: 17: __C181collect_distributed_array_table_head_recursive_count.apply
2023-09-22 17:10:11.393 : INFO: instruction count: 27: __C181collect_distributed_array_table_head_recursive_count.__m183DECODE_r_struct_of_r_struct_of_r_int32ANDr_int32ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:11.393 : INFO: instruction count: 26: __C181collect_distributed_array_table_head_recursive_count.__m184INPLACE_DECODE_r_struct_of_r_int32ANDr_int32END_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.393 : INFO: instruction count: 10: __C181collect_distributed_array_table_head_recursive_count.__m185INPLACE_DECODE_r_int32_TO_r_int32
2023-09-22 17:10:11.393 : INFO: instruction count: 27: __C181collect_distributed_array_table_head_recursive_count.__m187DECODE_r_struct_of_r_struct_of_ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:11.393 : INFO: instruction count: 8: __C181collect_distributed_array_table_head_recursive_count.__m188INPLACE_DECODE_r_struct_of_END_TO_r_struct_of_END
2023-09-22 17:10:11.394 : INFO: instruction count: 118: __C181collect_distributed_array_table_head_recursive_count.__m190split_StreamLen
2023-09-22 17:10:11.394 : INFO: instruction count: 13: __C181collect_distributed_array_table_head_recursive_count.__m200ENCODE_SBaseStructPointer_TO_r_struct_of_r_int32END
2023-09-22 17:10:11.394 : INFO: instruction count: 4: __C181collect_distributed_array_table_head_recursive_count.__m201ENCODE_SInt32$_TO_r_int32
2023-09-22 17:10:11.394 : INFO: instruction count: 9: __C181collect_distributed_array_table_head_recursive_count.setPartitionIndex
2023-09-22 17:10:11.395 : INFO: instruction count: 4: __C181collect_distributed_array_table_head_recursive_count.addPartitionRegion
2023-09-22 17:10:11.395 : INFO: instruction count: 4: __C181collect_distributed_array_table_head_recursive_count.setPool
2023-09-22 17:10:11.395 : INFO: instruction count: 3: __C181collect_distributed_array_table_head_recursive_count.addHailClassLoader
2023-09-22 17:10:11.395 : INFO: instruction count: 3: __C181collect_distributed_array_table_head_recursive_count.addFS
2023-09-22 17:10:11.395 : INFO: instruction count: 4: __C181collect_distributed_array_table_head_recursive_count.addTaskContext
2023-09-22 17:10:11.421 YarnSchedulerBackend$YarnDriverEndpoint: INFO: Registered executor NettyRpcEndpointRef(spark-client://Executor) (10.240.0.3:59140) with ID 2, ResourceProfileId 0
2023-09-22 17:10:11.422 ExecutorMonitor: INFO: New executor 2 has registered (new total is 2)
2023-09-22 17:10:11.442 : INFO: encoder cache hit
2023-09-22 17:10:11.444 MemoryStore: INFO: Block broadcast_1 stored as values in memory (estimated size 136.0 B, free 24.4 GiB)
2023-09-22 17:10:11.449 MemoryStore: INFO: Block broadcast_1_piece0 stored as bytes in memory (estimated size 91.0 B, free 24.4 GiB)
2023-09-22 17:10:11.450 BlockManagerInfo: INFO: Added broadcast_1_piece0 in memory on notebook-slowdown-repro-m.c.broad-ctsa.internal:38207 (size: 91.0 B, free: 24.4 GiB)
2023-09-22 17:10:11.452 SparkContext: INFO: Created broadcast 1 from broadcast at SparkBackend.scala:361
2023-09-22 17:10:11.453 : INFO: instruction count: 3: __C156HailClassLoaderContainer.<init>
2023-09-22 17:10:11.453 : INFO: instruction count: 3: __C156HailClassLoaderContainer.<clinit>
2023-09-22 17:10:11.454 : INFO: instruction count: 3: __C158FSContainer.<init>
2023-09-22 17:10:11.454 : INFO: instruction count: 3: __C158FSContainer.<clinit>
2023-09-22 17:10:11.482 : INFO: instruction count: 3: __C160Compiled.<init>
2023-09-22 17:10:11.483 : INFO: instruction count: 31: __C160Compiled.apply
2023-09-22 17:10:11.485 : INFO: instruction count: 431: __C160Compiled.__m162split_ToArray
2023-09-22 17:10:11.487 : INFO: instruction count: 371: __C160Compiled.__m164split_TailLoop
2023-09-22 17:10:11.488 : INFO: instruction count: 4: __C160Compiled.setBackend
2023-09-22 17:10:11.488 : INFO: instruction count: 9: __C160Compiled.__m210ENCODE_SBaseStructPointer_TO_r_struct_of_r_struct_of_r_int32ANDr_int32ENDEND
2023-09-22 17:10:11.488 : INFO: instruction count: 25: __C160Compiled.__m211ENCODE_SBaseStructPointer_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.488 : INFO: instruction count: 4: __C160Compiled.__m212ENCODE_SInt32$_TO_r_int32
2023-09-22 17:10:11.489 : INFO: instruction count: 9: __C160Compiled.__m213ENCODE_SBaseStructPointer_TO_r_struct_of_r_struct_of_ENDEND
2023-09-22 17:10:11.489 : INFO: instruction count: 1: __C160Compiled.__m214ENCODE_SBaseStructPointer_TO_r_struct_of_END
2023-09-22 17:10:11.489 : INFO: instruction count: 18: __C160Compiled.__m215str
2023-09-22 17:10:11.489 : INFO: instruction count: 29: __C160Compiled.__m218concat
2023-09-22 17:10:11.490 : INFO: instruction count: 29: __C160Compiled.__m219concat
2023-09-22 17:10:11.490 : INFO: instruction count: 9: __C160Compiled.__m220concat
2023-09-22 17:10:11.490 : INFO: instruction count: 27: __C160Compiled.__m221DECODE_r_struct_of_r_int32END_TO_SBaseStructPointer
2023-09-22 17:10:11.491 : INFO: instruction count: 10: __C160Compiled.__m222INPLACE_DECODE_r_int32_TO_r_int32
2023-09-22 17:10:11.491 : INFO: instruction count: 70: __C160Compiled.__m226split_StreamFold
2023-09-22 17:10:11.491 : INFO: instruction count: 11: __C160Compiled.__m236ord_gteq
2023-09-22 17:10:11.492 : INFO: instruction count: 16: __C160Compiled.__m237ord_gteqNonnull
2023-09-22 17:10:11.492 : INFO: instruction count: 11: __C160Compiled.__m238ord_lteq
2023-09-22 17:10:11.492 : INFO: instruction count: 14: __C160Compiled.__m239ord_lteqNonnull
2023-09-22 17:10:11.492 : INFO: instruction count: 11: __C160Compiled.__m247ord_equiv
2023-09-22 17:10:11.493 : INFO: instruction count: 14: __C160Compiled.__m248ord_equivNonnull
2023-09-22 17:10:11.494 : INFO: instruction count: 225: __C160Compiled.__m249split_TailLoop
2023-09-22 17:10:11.494 : INFO: instruction count: 35: __C160Compiled.__m255arrayref_bounds_check
2023-09-22 17:10:11.494 : INFO: instruction count: 11: __C160Compiled.__m256ord_lteq
2023-09-22 17:10:11.495 : INFO: instruction count: 16: __C160Compiled.__m257ord_lteqNonnull
2023-09-22 17:10:11.495 : INFO: instruction count: 9: __C160Compiled.setPartitionIndex
2023-09-22 17:10:11.495 : INFO: instruction count: 4: __C160Compiled.addPartitionRegion
2023-09-22 17:10:11.495 : INFO: instruction count: 4: __C160Compiled.setPool
2023-09-22 17:10:11.495 : INFO: instruction count: 3: __C160Compiled.addHailClassLoader
2023-09-22 17:10:11.496 : INFO: instruction count: 3: __C160Compiled.addFS
2023-09-22 17:10:11.496 : INFO: instruction count: 4: __C160Compiled.addTaskContext
2023-09-22 17:10:11.496 : INFO: instruction count: 3: __C160Compiled.setObjects
2023-09-22 17:10:11.496 : INFO: instruction count: 110: __C160Compiled.addAndDecodeLiterals
2023-09-22 17:10:11.497 : INFO: instruction count: 63: __C160Compiled.__m282DECODE_r_struct_of_r_binaryANDr_binaryANDr_struct_of_ENDANDr_struct_of_r_int32ANDr_int64ENDANDr_array_of_r_struct_of_r_int32ANDr_int32ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:11.497 : INFO: instruction count: 31: __C160Compiled.__m283INPLACE_DECODE_r_binary_TO_r_string
2023-09-22 17:10:11.497 : INFO: instruction count: 8: __C160Compiled.__m284INPLACE_DECODE_r_struct_of_END_TO_r_struct_of_END
2023-09-22 17:10:11.498 : INFO: instruction count: 26: __C160Compiled.__m285INPLACE_DECODE_r_struct_of_r_int32ANDr_int64END_TO_r_tuple_of_r_int32ANDr_int64END
2023-09-22 17:10:11.498 : INFO: instruction count: 10: __C160Compiled.__m286INPLACE_DECODE_r_int64_TO_r_int64
2023-09-22 17:10:11.498 : INFO: instruction count: 58: __C160Compiled.__m287INPLACE_DECODE_r_array_of_r_struct_of_r_int32ANDr_int32END_TO_r_array_of_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.499 : INFO: instruction count: 26: __C160Compiled.__m288INPLACE_DECODE_r_struct_of_r_int32ANDr_int32END_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.500 : INFO: instruction count: 242: __C160Compiled.__m164split_TailLoop_region4_7
2023-09-22 17:10:11.500 : INFO: instruction count: 3: __C289__m164split_TailLoopSpills.<init>
2023-09-22 17:10:11.501 : INFO: instruction count: 3: __C216staticWrapperClass_1.<init>
2023-09-22 17:10:11.506 : INFO: initial IR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.515 BlockManagerMasterEndpoint: INFO: Registering block manager notebook-slowdown-repro-w-0.c.broad-ctsa.internal:38083 with 3.2 GiB RAM, BlockManagerId(2, notebook-slowdown-repro-w-0.c.broad-ctsa.internal, 38083, None)
2023-09-22 17:10:11.549 : INFO: after optimize: compileLowerer, initial IR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.557 : INFO: after InlineApplyIR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.595 : INFO: after optimize: compileLowerer, after InlineApplyIR: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.603 : INFO: after LowerArrayAggsToRunAggs: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.631 : INFO: after optimize: compileLowerer, after LowerArrayAggsToRunAggs: IR size 128:
!c4 = I32 [4]
!c0 = I32 [0]
%22 = TailLoop(!c4, !c0) {
(%loopvar, %loopvar2, %loop) =>
!1 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s = ToStream(!1) [False]
!s2 = StreamTake(!s, %loopvar)
!2 = Literal [Struct{}, <literal value>]
!3 = Str ["iteration="]
!4 = Apply(%loopvar2) [-1, str, (), String]
!5 = Apply(!3, !4) [-1, concat, (), String]
!6 = Str [",nParts="]
!7 = Apply(!5, !6) [-1, concat, (), String]
!8 = Apply(%loopvar) [-1, str, (), String]
!9 = Apply(!7, !8) [-1, concat, (), String]
%12 = CollectDistributedArray(!s2, !2, !9) {
(%ctx, %g) =>
!10 = GetField(%ctx) [start]
!11 = GetField(%ctx) [end]
!c1 = I32 [1]
!s3 = StreamRange(!10, !11, !c1) [-1, True]
!s4 = StreamMap(!s3) { (%elt) =>
MakeStruct(idx: %elt)
}
!c11 = I32 [11]
!s5 = StreamTake(!s4, !c11)
StreamLen(!s5)
}
!s6 = ToStream(%12) [False]
!c0_2 = I32 [0]
!13 = StreamFold(!s6, !c0_2) { (%accum, %elt2) =>
ApplyBinaryPrimOp(%accum, %elt2) [Add]
}
!14 = Cast(!13) [Int64]
!15 = I64 [11]
!16 = ApplyComparisonOp(!14, !15) [GTEQ]
!c2 = I32 [2]
!17 = ArrayLen(%12)
!18 = ApplyComparisonOp(!c2, !17) [LTEQ]
!19 = ApplySpecial(!16, !18) [-1, lor,
(), Boolean]
If !19 then { %12 } else {
!c4_2 = I32 [4]
!20 = ApplyBinaryPrimOp(%loopvar, !c4_2) [Multiply]
!c1_2 = I32 [1]
!21 = ApplyBinaryPrimOp(%loopvar2, !c1_2) [Add]
Recur(!20, !21) [Array[Int32]]
}
}
%23 = ArrayLen(%22)
!c0_3 = I32 [0]
!24 = ApplyComparisonOp(%23, !c0_3) [EQWithNA]
%39 = If !24 then {
Literal [Tuple[Int32,Int64], <literal value>]
} else {
!c0_4 = I32 [0]
!25 = I64 [11]
TailLoop(!c0_4, !25) {
(%loopvar3, %loopvar4, %loop2) =>
!c1_3 = I32 [1]
!26 = ApplyBinaryPrimOp(%23, !c1_3) [Subtract]
!27 = ApplyComparisonOp(%loopvar3, !26) [EQWithNA]
!28 = ArrayRef(%22, %loopvar3) [-1]
!29 = Cast(!28) [Int64]
!30 = ApplyBinaryPrimOp(%loopvar4, !29) [Subtract]
!31 = I64 [0]
!32 = ApplyComparisonOp(!30, !31) [LTEQ]
!33 = ApplySpecial(!27, !32) [-1, lor,
(), Boolean]
If !33 then {
!c1_4 = I32 [1]
!34 = ApplyBinaryPrimOp(%loopvar3, !c1_4) [Add]
MakeTuple(!34, %loopvar4) [(0 1)]
} else {
!c1_5 = I32 [1]
!35 = ApplyBinaryPrimOp(%loopvar3, !c1_5) [Add]
!36 = ArrayRef(%22, %loopvar3) [-1]
!37 = Cast(!36) [Int64]
!38 = ApplyBinaryPrimOp(%loopvar4, !37) [Subtract]
Recur(!35, !38) [Tuple[Int32,Int64]]
}
}
}
!40 = Literal [Array[Struct{start:Int32,end:Int32}], <literal value>]
!s7 = ToStream(!40) [False]
!41 = GetTupleElement(%39) [0]
!s8 = StreamTake(!s7, !41)
!c0_5 = I32 [0]
!42 = GetTupleElement(%39) [0]
!c1_6 = I32 [1]
!s9 = StreamRange(!c0_5, !42, !c1_6) [-1, False]
!s10 = StreamMap(!s9) { (%elt3) =>
!43 = GetTupleElement(%39) [0]
!c1_7 = I32 [1]
!44 = ApplyBinaryPrimOp(!43, !c1_7) [Subtract]
!45 = ApplyComparisonOp(%elt3, !44) [EQWithNA]
If !45 then {
!46 = GetTupleElement(%39) [1]
Cast(!46) [Int32]
} else {
ArrayRef(%22, %elt3) [-1]
}
}
!s11 = StreamZip(!s8, !s10) [-1, AssumeSameLength] {
(%elt4, %elt5) =>
MakeStruct(numberToTake: %elt5, old: %elt4)
}
!47 = ToArray(!s11)
MakeTuple(!47) [(0)]
2023-09-22 17:10:11.648 : INFO: instruction count: 3: __C318HailClassLoaderContainer.<init>
2023-09-22 17:10:11.648 : INFO: instruction count: 3: __C318HailClassLoaderContainer.<clinit>
2023-09-22 17:10:11.649 : INFO: instruction count: 3: __C320FSContainer.<init>
2023-09-22 17:10:11.649 : INFO: instruction count: 3: __C320FSContainer.<clinit>
2023-09-22 17:10:11.652 : INFO: instruction count: 3: __C322collect_distributed_array_table_head_recursive_count.<init>
2023-09-22 17:10:11.653 : INFO: instruction count: 111: __C322collect_distributed_array_table_head_recursive_count.apply
2023-09-22 17:10:11.653 : INFO: instruction count: 17: __C322collect_distributed_array_table_head_recursive_count.apply
2023-09-22 17:10:11.653 : INFO: instruction count: 27: __C322collect_distributed_array_table_head_recursive_count.__m324DECODE_r_struct_of_r_struct_of_r_int32ANDr_int32ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:11.653 : INFO: instruction count: 26: __C322collect_distributed_array_table_head_recursive_count.__m325INPLACE_DECODE_r_struct_of_r_int32ANDr_int32END_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.653 : INFO: instruction count: 10: __C322collect_distributed_array_table_head_recursive_count.__m326INPLACE_DECODE_r_int32_TO_r_int32
2023-09-22 17:10:11.654 : INFO: instruction count: 27: __C322collect_distributed_array_table_head_recursive_count.__m328DECODE_r_struct_of_r_struct_of_ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:11.654 : INFO: instruction count: 8: __C322collect_distributed_array_table_head_recursive_count.__m329INPLACE_DECODE_r_struct_of_END_TO_r_struct_of_END
2023-09-22 17:10:11.654 : INFO: instruction count: 118: __C322collect_distributed_array_table_head_recursive_count.__m331split_StreamLen
2023-09-22 17:10:11.654 : INFO: instruction count: 13: __C322collect_distributed_array_table_head_recursive_count.__m341ENCODE_SBaseStructPointer_TO_r_struct_of_r_int32END
2023-09-22 17:10:11.654 : INFO: instruction count: 4: __C322collect_distributed_array_table_head_recursive_count.__m342ENCODE_SInt32$_TO_r_int32
2023-09-22 17:10:11.655 : INFO: instruction count: 9: __C322collect_distributed_array_table_head_recursive_count.setPartitionIndex
2023-09-22 17:10:11.655 : INFO: instruction count: 4: __C322collect_distributed_array_table_head_recursive_count.addPartitionRegion
2023-09-22 17:10:11.655 : INFO: instruction count: 4: __C322collect_distributed_array_table_head_recursive_count.setPool
2023-09-22 17:10:11.655 : INFO: instruction count: 3: __C322collect_distributed_array_table_head_recursive_count.addHailClassLoader
2023-09-22 17:10:11.655 : INFO: instruction count: 3: __C322collect_distributed_array_table_head_recursive_count.addFS
2023-09-22 17:10:11.655 : INFO: instruction count: 4: __C322collect_distributed_array_table_head_recursive_count.addTaskContext
2023-09-22 17:10:11.686 : INFO: encoder cache hit
2023-09-22 17:10:11.688 MemoryStore: INFO: Block broadcast_2 stored as values in memory (estimated size 136.0 B, free 24.4 GiB)
2023-09-22 17:10:11.692 MemoryStore: INFO: Block broadcast_2_piece0 stored as bytes in memory (estimated size 91.0 B, free 24.4 GiB)
2023-09-22 17:10:11.693 BlockManagerInfo: INFO: Added broadcast_2_piece0 in memory on notebook-slowdown-repro-m.c.broad-ctsa.internal:38207 (size: 91.0 B, free: 24.4 GiB)
2023-09-22 17:10:11.694 SparkContext: INFO: Created broadcast 2 from broadcast at SparkBackend.scala:361
2023-09-22 17:10:11.695 : INFO: instruction count: 3: __C297HailClassLoaderContainer.<init>
2023-09-22 17:10:11.695 : INFO: instruction count: 3: __C297HailClassLoaderContainer.<clinit>
2023-09-22 17:10:11.695 : INFO: instruction count: 3: __C299FSContainer.<init>
2023-09-22 17:10:11.695 : INFO: instruction count: 3: __C299FSContainer.<clinit>
2023-09-22 17:10:11.709 : INFO: instruction count: 3: __C301Compiled.<init>
2023-09-22 17:10:11.709 : INFO: instruction count: 31: __C301Compiled.apply
2023-09-22 17:10:11.710 : INFO: instruction count: 431: __C301Compiled.__m303split_ToArray
2023-09-22 17:10:11.711 : INFO: instruction count: 371: __C301Compiled.__m305split_TailLoop
2023-09-22 17:10:11.711 : INFO: instruction count: 4: __C301Compiled.setBackend
2023-09-22 17:10:11.711 : INFO: instruction count: 9: __C301Compiled.__m351ENCODE_SBaseStructPointer_TO_r_struct_of_r_struct_of_r_int32ANDr_int32ENDEND
2023-09-22 17:10:11.712 : INFO: instruction count: 25: __C301Compiled.__m352ENCODE_SBaseStructPointer_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.712 : INFO: instruction count: 4: __C301Compiled.__m353ENCODE_SInt32$_TO_r_int32
2023-09-22 17:10:11.712 : INFO: instruction count: 9: __C301Compiled.__m354ENCODE_SBaseStructPointer_TO_r_struct_of_r_struct_of_ENDEND
2023-09-22 17:10:11.712 : INFO: instruction count: 1: __C301Compiled.__m355ENCODE_SBaseStructPointer_TO_r_struct_of_END
2023-09-22 17:10:11.712 : INFO: instruction count: 18: __C301Compiled.__m356str
2023-09-22 17:10:11.712 : INFO: instruction count: 29: __C301Compiled.__m359concat
2023-09-22 17:10:11.713 : INFO: instruction count: 29: __C301Compiled.__m360concat
2023-09-22 17:10:11.713 : INFO: instruction count: 9: __C301Compiled.__m361concat
2023-09-22 17:10:11.713 : INFO: instruction count: 27: __C301Compiled.__m362DECODE_r_struct_of_r_int32END_TO_SBaseStructPointer
2023-09-22 17:10:11.713 : INFO: instruction count: 10: __C301Compiled.__m363INPLACE_DECODE_r_int32_TO_r_int32
2023-09-22 17:10:11.713 : INFO: instruction count: 70: __C301Compiled.__m367split_StreamFold
2023-09-22 17:10:11.713 : INFO: instruction count: 11: __C301Compiled.__m377ord_gteq
2023-09-22 17:10:11.714 : INFO: instruction count: 16: __C301Compiled.__m378ord_gteqNonnull
2023-09-22 17:10:11.714 : INFO: instruction count: 11: __C301Compiled.__m379ord_lteq
2023-09-22 17:10:11.714 : INFO: instruction count: 14: __C301Compiled.__m380ord_lteqNonnull
2023-09-22 17:10:11.714 : INFO: instruction count: 11: __C301Compiled.__m388ord_equiv
2023-09-22 17:10:11.714 : INFO: instruction count: 14: __C301Compiled.__m389ord_equivNonnull
2023-09-22 17:10:11.715 : INFO: instruction count: 225: __C301Compiled.__m390split_TailLoop
2023-09-22 17:10:11.715 : INFO: instruction count: 35: __C301Compiled.__m396arrayref_bounds_check
2023-09-22 17:10:11.715 : INFO: instruction count: 11: __C301Compiled.__m397ord_lteq
2023-09-22 17:10:11.715 : INFO: instruction count: 16: __C301Compiled.__m398ord_lteqNonnull
2023-09-22 17:10:11.715 : INFO: instruction count: 9: __C301Compiled.setPartitionIndex
2023-09-22 17:10:11.715 : INFO: instruction count: 4: __C301Compiled.addPartitionRegion
2023-09-22 17:10:11.716 : INFO: instruction count: 4: __C301Compiled.setPool
2023-09-22 17:10:11.716 : INFO: instruction count: 3: __C301Compiled.addHailClassLoader
2023-09-22 17:10:11.716 : INFO: instruction count: 3: __C301Compiled.addFS
2023-09-22 17:10:11.716 : INFO: instruction count: 4: __C301Compiled.addTaskContext
2023-09-22 17:10:11.716 : INFO: instruction count: 3: __C301Compiled.setObjects
2023-09-22 17:10:11.716 : INFO: instruction count: 110: __C301Compiled.addAndDecodeLiterals
2023-09-22 17:10:11.717 : INFO: instruction count: 63: __C301Compiled.__m423DECODE_r_struct_of_r_binaryANDr_binaryANDr_struct_of_ENDANDr_struct_of_r_int32ANDr_int64ENDANDr_array_of_r_struct_of_r_int32ANDr_int32ENDEND_TO_SBaseStructPointer
2023-09-22 17:10:11.717 : INFO: instruction count: 31: __C301Compiled.__m424INPLACE_DECODE_r_binary_TO_r_string
2023-09-22 17:10:11.717 : INFO: instruction count: 8: __C301Compiled.__m425INPLACE_DECODE_r_struct_of_END_TO_r_struct_of_END
2023-09-22 17:10:11.717 : INFO: instruction count: 26: __C301Compiled.__m426INPLACE_DECODE_r_struct_of_r_int32ANDr_int64END_TO_r_tuple_of_r_int32ANDr_int64END
2023-09-22 17:10:11.717 : INFO: instruction count: 10: __C301Compiled.__m427INPLACE_DECODE_r_int64_TO_r_int64
2023-09-22 17:10:11.717 : INFO: instruction count: 58: __C301Compiled.__m428INPLACE_DECODE_r_array_of_r_struct_of_r_int32ANDr_int32END_TO_r_array_of_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.717 : INFO: instruction count: 26: __C301Compiled.__m429INPLACE_DECODE_r_struct_of_r_int32ANDr_int32END_TO_r_struct_of_r_int32ANDr_int32END
2023-09-22 17:10:11.718 : INFO: instruction count: 242: __C301Compiled.__m305split_TailLoop_region4_7
2023-09-22 17:10:11.718 : INFO: instruction count: 3: __C430__m305split_TailLoopSpills.<init>
2023-09-22 17:10:11.719 : INFO: instruction count: 3: __C357staticWrapperClass_1.<init>
2023-09-22 17:10:11.752 : INFO: [collectDArray|table_head_recursive_count|iteration=0,nParts=4]: executing 2 tasks, contexts size = 24.00 B, globals size = 4.00 B
2023-09-22 17:10:11.753 MemoryStore: INFO: Block broadcast_3 stored as values in memory (estimated size 64.0 B, free 24.4 GiB)
2023-09-22 17:10:11.757 MemoryStore: INFO: Block broadcast_3_piece0 stored as bytes in memory (estimated size 49.0 B, free 24.4 GiB)
2023-09-22 17:10:11.758 BlockManagerInfo: INFO: Added broadcast_3_piece0 in memory on notebook-slowdown-repro-m.c.broad-ctsa.internal:38207 (size: 49.0 B, free: 24.4 GiB)
2023-09-22 17:10:11.759 SparkContext: INFO: Created broadcast 3 from broadcast at SparkBackend.scala:361
2023-09-22 17:10:11.791 MemoryStore: INFO: Block broadcast_4 stored as values in memory (estimated size 302.3 KiB, free 24.4 GiB)
2023-09-22 17:10:11.814 MemoryStore: INFO: Block broadcast_4_piece0 stored as bytes in memory (estimated size 38.4 KiB, free 24.4 GiB)
2023-09-22 17:10:11.815 BlockManagerInfo: INFO: Added broadcast_4_piece0 in memory on notebook-slowdown-repro-m.c.broad-ctsa.internal:38207 (size: 38.4 KiB, free: 24.4 GiB)
2023-09-22 17:10:11.816 SparkContext: INFO: Created broadcast 4 from broadcast at SparkBackend.scala:361
2023-09-22 17:10:11.965 SparkContext: INFO: Starting job: collect at SparkBackend.scala:406
2023-09-22 17:10:11.982 DAGScheduler: INFO: Got job 0 (collect at SparkBackend.scala:406) with 2 output partitions
2023-09-22 17:10:11.982 DAGScheduler: INFO: Final stage: ResultStage 0 (collect at SparkBackend.scala:406)
2023-09-22 17:10:11.982 DAGScheduler: INFO: Parents of final stage: List()
2023-09-22 17:10:11.984 DAGScheduler: INFO: Missing parents: List()
2023-09-22 17:10:11.991 DAGScheduler: INFO: Submitting ResultStage 0 ([0] at RDD at SparkBackend.scala:377), which has no missing parents
2023-09-22 17:10:12.055 MemoryStore: INFO: Block broadcast_5 stored as values in memory (estimated size 12.2 KiB, free 24.4 GiB)
2023-09-22 17:10:12.060 MemoryStore: INFO: Block broadcast_5_piece0 stored as bytes in memory (estimated size 6.9 KiB, free 24.4 GiB)
2023-09-22 17:10:12.061 BlockManagerInfo: INFO: Added broadcast_5_piece0 in memory on notebook-slowdown-repro-m.c.broad-ctsa.internal:38207 (size: 6.9 KiB, free: 24.4 GiB)
2023-09-22 17:10:12.061 SparkContext: INFO: Created broadcast 5 from broadcast at DAGScheduler.scala:1513
2023-09-22 17:10:12.079 DAGScheduler: INFO: Submitting 2 missing tasks from ResultStage 0 ([0] at RDD at SparkBackend.scala:377) (first 15 tasks are for partitions Vector(0, 1))
2023-09-22 17:10:12.080 YarnScheduler: INFO: Adding task set 0.0 with 2 tasks resource profile 0
2023-09-22 17:10:12.103 FairSchedulableBuilder: INFO: Added task set TaskSet_0.0 tasks to pool default
2023-09-22 17:10:12.120 TaskSetManager: INFO: Starting task 0.0 in stage 0.0 (TID 0) (notebook-slowdown-repro-w-1.c.broad-ctsa.internal, executor 1, partition 0, PROCESS_LOCAL, 15455 bytes) taskResourceAssignments Map()
2023-09-22 17:10:12.126 TaskSetManager: INFO: Starting task 1.0 in stage 0.0 (TID 1) (notebook-slowdown-repro-w-0.c.broad-ctsa.internal, executor 2, partition 1, PROCESS_LOCAL, 15455 bytes) taskResourceAssignments Map()
2023-09-22 17:10:12.131 YarnAllocator: INFO: Resource profile 0 doesn't exist, adding it
2023-09-22 17:10:12.132 YarnAllocator: INFO: Driver requested a total number of 1 executor(s) for resource profile id: 0.
2023-09-22 17:22:22.737 SparkContext: INFO: Invoking stop() from shutdown hook
2023-09-22 17:22:22.751 AbstractConnector: INFO: Stopped Spark@4c6e3b0d{HTTP/1.1, (http/1.1)}{0.0.0.0:0}
2023-09-22 17:22:22.753 SparkUI: INFO: Stopped Spark web UI at http://notebook-slowdown-repro-m.c.broad-ctsa.internal:43055
2023-09-22 17:22:22.759 DAGScheduler: INFO: Job 0 failed: collect at SparkBackend.scala:406, took 730.794050 s
2023-09-22 17:22:22.759 DAGScheduler: INFO: ResultStage 0 (collect at SparkBackend.scala:406) failed in 730.748 s due to Stage cancelled because SparkContext was shut down
2023-09-22 17:22:22.760 : ERROR: error while applying lowering 'LowerOrInterpretNonCompilable'
2023-09-22 17:22:22.761 : ERROR: error while applying lowering 'EvalRelationalLets'
2023-09-22 17:22:22.761 : INFO: RegionPool: initialized for thread 17: Thread-3
2023-09-22 17:22:22.761 : INFO: TaskReport: stage=0, partition=0, attempt=0, peakBytes=0, peakBytesReadable=0.00 B, chunks requested=0, cache hits=0
2023-09-22 17:22:22.761 : INFO: RegionPool: FREE: 0 allocated (0 blocks / 0 chunks), regions.size = 0, 0 current java objects, thread 17: Thread-3
2023-09-22 17:22:22.761 : INFO: RegionPool: FREE: 192.0K allocated (192.0K blocks / 0 chunks), regions.size = 3, 0 current java objects, thread 17: Thread-3
2023-09-22 17:22:22.769 YarnClientSchedulerBackend: INFO: Interrupting monitor thread
2023-09-22 17:22:22.769 YarnClientSchedulerBackend: INFO: Shutting down all executors
2023-09-22 17:22:22.770 YarnSchedulerBackend$YarnDriverEndpoint: INFO: Asking each executor to shut down
2023-09-22 17:22:22.777 ApplicationMaster: INFO: Final app status: SUCCEEDED, exitCode: 0
2023-09-22 17:22:22.786 ApplicationMaster: INFO: Unregistering ApplicationMaster with SUCCEEDED
2023-09-22 17:22:22.796 ApplicationMaster: INFO: Deleting staging directory hdfs://notebook-slowdown-repro-m/user/root/.sparkStaging/application_1695402030462_0001
2023-09-22 17:22:22.826 YarnClientSchedulerBackend: INFO: YARN client scheduler backend Stopped
2023-09-22 17:22:23.034 : INFO: RegionPool: initialized for thread 125: Thread-44
2023-09-22 17:22:23.046 : INFO: RegionPool: initialized for thread 125: Thread-44
2023-09-22 17:22:23.046 : INFO: TaskReport: stage=0, partition=0, attempt=0, peakBytes=0, peakBytesReadable=0.00 B, chunks requested=0, cache hits=0
2023-09-22 17:22:23.046 : INFO: RegionPool: FREE: 0 allocated (0 blocks / 0 chunks), regions.size = 0, 0 current java objects, thread 125: Thread-44
2023-09-22 17:22:23.046 : INFO: RegionPool: FREE: 64.0K allocated (64.0K blocks / 0 chunks), regions.size = 1, 0 current java objects, thread 125: Thread-44
2023-09-22 17:22:23.049 : ERROR: IllegalStateException: Cannot call methods on a stopped SparkContext.
This stopped SparkContext was created at:
org.apache.spark.SparkContext.<init>(SparkContext.scala:87)
is.hail.backend.spark.SparkBackend$.configureAndCreateSparkContext(SparkBackend.scala:145)
is.hail.backend.spark.SparkBackend$.apply(SparkBackend.scala:237)
is.hail.backend.spark.SparkBackend.apply(SparkBackend.scala)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)
py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
py4j.Gateway.invoke(Gateway.java:282)
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
py4j.commands.CallCommand.execute(CallCommand.java:79)
py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
py4j.ClientServerConnection.run(ClientServerConnection.java:106)
java.base/java.lang.Thread.run(Thread.java:829)
The currently active SparkContext was created at:
org.apache.spark.SparkContext.<init>(SparkContext.scala:87)
is.hail.backend.spark.SparkBackend$.configureAndCreateSparkContext(SparkBackend.scala:145)
is.hail.backend.spark.SparkBackend$.apply(SparkBackend.scala:237)
is.hail.backend.spark.SparkBackend.apply(SparkBackend.scala)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)
py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
py4j.Gateway.invoke(Gateway.java:282)
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
py4j.commands.CallCommand.execute(CallCommand.java:79)
py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
py4j.ClientServerConnection.run(ClientServerConnection.java:106)
java.base/java.lang.Thread.run(Thread.java:829)
From java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext.
This stopped SparkContext was created at:
org.apache.spark.SparkContext.<init>(SparkContext.scala:87)
is.hail.backend.spark.SparkBackend$.configureAndCreateSparkContext(SparkBackend.scala:145)
is.hail.backend.spark.SparkBackend$.apply(SparkBackend.scala:237)
is.hail.backend.spark.SparkBackend.apply(SparkBackend.scala)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)
py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
py4j.Gateway.invoke(Gateway.java:282)
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
py4j.commands.CallCommand.execute(CallCommand.java:79)
py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
py4j.ClientServerConnection.run(ClientServerConnection.java:106)
java.base/java.lang.Thread.run(Thread.java:829)
The currently active SparkContext was created at:
org.apache.spark.SparkContext.<init>(SparkContext.scala:87)
is.hail.backend.spark.SparkBackend$.configureAndCreateSparkContext(SparkBackend.scala:145)
is.hail.backend.spark.SparkBackend$.apply(SparkBackend.scala:237)
is.hail.backend.spark.SparkBackend.apply(SparkBackend.scala)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)
py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
py4j.Gateway.invoke(Gateway.java:282)
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
py4j.commands.CallCommand.execute(CallCommand.java:79)
py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
py4j.ClientServerConnection.run(ClientServerConnection.java:106)
java.base/java.lang.Thread.run(Thread.java:829)
at org.apache.spark.SparkContext.assertNotStopped(SparkContext.scala:120)
at org.apache.spark.SparkContext.defaultParallelism(SparkContext.scala:2532)
at is.hail.backend.spark.SparkBackend.defaultParallelism(SparkBackend.scala:412)
at is.hail.expr.ir.IRParser$.$anonfun$table_ir_1$27(Parser.scala:1714)
at scala.runtime.java8.JFunction0$mcI$sp.apply(JFunction0$mcI$sp.java:23)
at scala.Option.getOrElse(Option.scala:189)
at is.hail.expr.ir.IRParser$.table_ir_1(Parser.scala:1714)
at is.hail.expr.ir.IRParser$.$anonfun$table_ir$1(Parser.scala:1602)
at is.hail.utils.StackSafe$More.advance(StackSafe.scala:64)
at is.hail.utils.StackSafe$.run(StackSafe.scala:16)
at is.hail.utils.StackSafe$StackFrame.run(StackSafe.scala:32)
at is.hail.expr.ir.IRParser$.$anonfun$parse_value_ir$1(Parser.scala:2157)
at is.hail.expr.ir.IRParser$.parse(Parser.scala:2153)
at is.hail.expr.ir.IRParser$.parse_value_ir(Parser.scala:2157)
at is.hail.backend.spark.SparkBackend.$anonfun$parse_value_ir$2(SparkBackend.scala:691)
at is.hail.backend.ExecuteContext$.$anonfun$scoped$3(ExecuteContext.scala:76)
at is.hail.utils.package$.using(package.scala:637)
at is.hail.backend.ExecuteContext$.$anonfun$scoped$2(ExecuteContext.scala:76)
at is.hail.utils.package$.using(package.scala:637)
at is.hail.annotations.RegionPool$.scoped(RegionPool.scala:17)
at is.hail.backend.ExecuteContext$.scoped(ExecuteContext.scala:62)
at is.hail.backend.spark.SparkBackend.$anonfun$withExecuteContext$1(SparkBackend.scala:345)
at is.hail.backend.spark.SparkBackend.$anonfun$parse_value_ir$1(SparkBackend.scala:690)
at is.hail.utils.ExecutionTimer$.time(ExecutionTimer.scala:52)
at is.hail.utils.ExecutionTimer$.logTime(ExecutionTimer.scala:59)
at is.hail.backend.spark.SparkBackend.parse_value_ir(SparkBackend.scala:689)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
at py4j.Gateway.invoke(Gateway.java:282)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.ClientServerConnection.waitForCommands(ClientServerConnection.java:182)
at py4j.ClientServerConnection.run(ClientServerConnection.java:106)
at java.base/java.lang.Thread.run(Thread.java:829)
2023-09-22 17:22:23.222 MapOutputTrackerMasterEndpoint: INFO: MapOutputTrackerMasterEndpoint stopped!
2023-09-22 17:22:23.243 MemoryStore: INFO: MemoryStore cleared
2023-09-22 17:22:23.244 BlockManager: INFO: BlockManager stopped
2023-09-22 17:22:23.251 BlockManagerMaster: INFO: BlockManagerMaster stopped
2023-09-22 17:22:23.257 StatsdSink: INFO: StatsdSink stopped.
2023-09-22 17:22:23.263 OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: INFO: OutputCommitCoordinator stopped!
2023-09-22 17:22:23.273 SparkContext: INFO: Successfully stopped SparkContext
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment